Форум программистов, компьютерный форум, киберфорум
ActionScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для viktorjaguar
11 / 12 / 2
Регистрация: 01.05.2015
Сообщений: 143

Обращение к одному и тому же классу из разных классов

08.06.2015, 23:06. Показов 966. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Пишу в классах(впервые относительно большой проект), до этого писал код в кадрах.
Столкнулся с проблемой обращения к одному и тому же классу, конкретно это класс "MainMenu".

Архитектура такая:
preloader->Splash->MainMenu->|New|Continue|Settings|

Из класса "Splash" вызываю "MainMenu" при помощи:

ActionScript 3
1
2
3
4
5
6
7
private var _mainMenu:MainMenu = new MainMenu();
 
private function goto():void
{
   funcRemove();//функция очистки экрана
   addChild(_mainMenu);
}
Из класса "MainMenu" я (при нажатии на соответствующую кнопку) попадаю в класс "Settings", и вот обратно в "MainMenu" вернуться я уже не могу...

Пытаюсь делать таким же образом как вверху:

ActionScript 3
1
2
3
4
5
6
7
private var _mainMenu:MainMenu = new MainMenu();
 
private function goto():void
{
   funcRemove();//функция очистки экрана
   addChild(_mainMenu);
}
Но тут ошибка. Какая сказать не могу, но очень похоже на бесконечный цикл... В режиме дебага, пишет просто "Сеанс отладки прерван."
Такое чувство, что классы начинают друг друга вызывать((((

Что я не так делаю?
Заранее спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.06.2015, 23:06
Ответы с готовыми решениями:

Обращение к одному и тому же результату запроса в цикле
Ребята, подскажите пожалуйста по тех. особенностям работы Linq запросов. Я вот раньше полагал, что при первом обращении к переменной...

Обращение к классу из разных файлов
Доброго времени! Подскажите пожалуйста по одному вопросу, как лучше организовать обращение к классу: Реальный код не привожу, тк...

Доступ к одному объекту из разных классов
здравствуйте уважаемые! подскажите как реализовать доступ к одному и тому же объекту из разных классов приложения, объект...

6
 Аватар для alexandrratush
59 / 59 / 15
Регистрация: 06.05.2014
Сообщений: 206
08.06.2015, 23:27
Что значит "не можете вернуться в MainMenu"? Если показать его на сцене, то можно просто удалить ваше окно "Settings", а под ним скорее всего и будет главная меню.
Как и где вы добавляете экземпляр класса "Settings"? Там можно подписаться на событие от окна настроек, и когда оно придет, то можно и делать что-то с этим меню. В вашем случае удалить со сцены и отобразить главное меню, когда придет событие onClose от меню "Settings".
0
 Аватар для viktorjaguar
11 / 12 / 2
Регистрация: 01.05.2015
Сообщений: 143
09.06.2015, 10:47  [ТС]
Экземпляр класса "Setting" добавляю в классе "MainMenu"

ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private var _settings:Settings    = new Settings();
 
private function settings(e:MouseEvent):void
{
    clearFunction();//функция очистки сцены
    addChild(_settings);
}
 
 
 
private function clearFunction():void
{
    _btnNew.removeEventListener(MouseEvent.MOUSE_DOWN, new);
    _btnContinue.removeEventListener(MouseEvent.MOUSE_DOWN, continue);
    _btnSettings.removeEventListener(MouseEvent.MOUSE_DOWN, settings);
    
    removeChild(_bgMenu);
    
    removeChild(_btnNew);
    removeChild(_btnContinue);
    removeChild(_btnSettings);
}
Как, ну не знаю, избавиться что-ли от экземпляра главного меню?

В общем нужно перемещаться по окнам (классам) при нажатии на соответствующую кнопку, к примеру из настроек попасть в главное меню, а из главного меню в любое другое окно...

Добавлено через 10 часов 55 минут
Может хоть ссылкой кто поделитесь...
0
7 / 7 / 6
Регистрация: 21.10.2012
Сообщений: 25
09.06.2015, 11:35
Нужен менеджер окон, суть такова, что в нем есть словарь(hash, dictionary) который хранит все окна игры, которые ты зарегистрировал(удаляет их, изменяет и тп) и 2 параметра(для начала), текущая страница и следующая страница - оба имею тип базового класса всех окон к примеру(ну или интерфейс). И класс событие, в котором хранится параметр на ту страницу которую нужно вызвать, и на которое подписаны все окна находящиеся в хеше.

ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    private var _windows:Dictionary;
    private var _current_window:BaseWindow;
    private var _new_window:BaseWindow;
 
    public function WindowManager() {
        _windows:Dictionary = new Dictionary();
    }
 
    public function register_window(window:BaseWindow):void {
    _windows:Dictionary[(window as Object).constructor] = window;
    //window.addEventListener(Класс_событие.Событие_для_открытия_страницы, show_window);
    }
 
    /*private function show_window(e:Класс_событие):void {
        Тут обрабатываем, старое окно скрываем, новое окно показываем, или старое вообще удаляем - как вам удобно
    }*/
 
/*В классе при клике вызываем нужное нам окно, к примеру dispatchEvent(new Класс_событие(Класс_событие.Событие_для_открытия_страницы, Главная_страница));*/
p.s. Потом лучше переделать dispatchEvent на call, если окон будет очень много
1
 Аватар для viktorjaguar
11 / 12 / 2
Регистрация: 01.05.2015
Сообщений: 143
09.06.2015, 13:02  [ТС]
Я правильно понял, все окна необходимо загрузить в начале, а затем просто перетаскивать их по слою, чтобы один слой перекрывал другой когда нужно?

Добавлено через 22 минуты
Я это к чему... Могу ли я собрать все эти окна в массив и перемещать по слоям (по индексу массива)?
0
7 / 7 / 6
Регистрация: 21.10.2012
Сообщений: 25
09.06.2015, 16:37
К примеру у Вас есть Класс сцена на которой Вы будете размещать какие то окна - к примеру у Вас 3 окна - Меню, Настройка, Окно игры.
Для начала можно попробовать их зарегистировать сразу в конструкторе сцены. Вы создаете экземпляр 3 окон и закидываете их в словарь - словарь находится в каком нить глобальном классе(как раз из предыдущего поста - менеджер окон) - имеет место почитать про синглтон. Все 3 окна мы добавляем на сцену и скрываем(к примеру для начала можно попробовать делать это через alpha канал. Все 3 окна должны наследоваться от базового класса у которого Вы должны реализовать 2 метода show и hide. Нужное окно мы вызываем через dispatchEvent(самое простое).
p.s. По поводу индекса - не есть хорошо, потому что окна могут меняться, какие то добавляться, какие то удаляться и тп, лучше использовать ассоциативные массивы.
1
 Аватар для viktorjaguar
11 / 12 / 2
Регистрация: 01.05.2015
Сообщений: 143
09.06.2015, 16:44  [ТС]
Спасибо, ушёл пробовать)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.06.2015, 16:44
Помогаю со студенческими работами здесь

Возможно ли одновременное обращение из разных потоков к одному, уже созданному обьекту X?
Здравствуйте! Я создаю экземпляр обьекта X, обьект X будет загружать данные из файла в себя(тоесть в опреративную память). Далее у...

Разная скорость интернета по одному и тому же кабелю
Здравствуйте! Подскажите пожалуйста , как можно решить проблему изложенную ниже. У меня на работе есть 2 ПК подключаю их по очереди по...

Доступ к одному и тому же объекту из двух списков
Есть 2 списка(Gournal и bannerQueue) содержащие объекты класса. Беру из 1 списка некоторые и помещаю во 2 список. Как можно изменить...

Обращение не к тому объекту в массиве
Здравствуйте. Есть программа: type TObj= object mas,velx,vely,ax,ay:real; x,y:integer; procedure rinit; procedure...

Почему разнятся результаты VirusTotal по одному и тому же файлу?
Здравствуйте! Прошу помощи. Почему разнятся результаты VirusTotal по одному и тому же файлу? Была тема про компанию IObit, где...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK сделайте это, JDK, то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Перейдите по ссылке:. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru