|
|
|||||
Задержка событий.
Сначала я инициализирую класс опций, который инициализирует все свои поля по ADDED_TO_STAGE
_options = Options.getInstance(); addChild(_options); //required for initializing sliders removeChild(_options); чуть ниже возвращает null. Выходит, это происходит с задержкой? Как же тогда поймать момент, когда init проинициализирован? Далее в конце init отсылаю событие Пытаюсь проверить, работает ли таким способом, и, угадайте что? _options = Options.getInstance(); addChild(_options); //required for initializing sliders removeChild(_options); _options.addEventListener(Event.ACTIVATE, function(e:Event):void{ trace(_options.stones); }); Что я делаю не так? update: Убрал removeChild в обработчик события, и заработало... Тоесть, событие ADDED_TO_STAGE, оказывается, вызывается не addChild напрямую, и происходит где-то через кадр?(Потому, что ENTER_FRAME успевает сработать разок) Как это вообще по нормальному то делается? У меня есть класс Options, дисплейный, по иниту инициализирует свои поля, но в конструкторе инициализировать нельзя потому, что он унаследован от Window, который рисует задний фон в своём ините, и выходит, что тогда элементы будут под задним фоном. Если переместить рисование фона в конструктор, то получается, что изменить параметры windowWidth и windowHeight невозможно, пробовл без super.windowWidth, не работает, с super пишет, что до вызова конструктора суперкласса this, super и всё такое запрещено. А фон нужно рисовать по размерам окна(логично). Оверрайда переменных не существует, что делать? Нужно проинициализировать Options и сразу же пользоваться его полями.
__________________
There is no thing in this world that is not simple. Последний раз редактировалось ZackMercury; 23.08.2017 в 23:29. |
|
|||||
А почему событие, которое я диспатчу в методе init после всего кода вызывает обработчик тогда, когда ничего не проинициализировано? Чушь какая-то.
Почему перенос removeChild в обработчик этого события помог?
__________________
There is no thing in this world that is not simple. |
|
|||||
Можешь изолировать проблему и выложить? А то трудно во всё это вникнуть. Ещё событие: flash.events.Event.ACTIVATE нельзя использовать в своей логике так как оно является широковещательным и зарезервировано для других целей.
И на всякий случай уточню, речь идёт о нативном дисплей листе и диспетчере? Лучше выложить проблемный код целиком.
__________________
Дети не должны знать о своих родителях |
|
|||||
Действительно, поменял ACTIVATE на кастомное, и перестало вообще вызываться) Я и не подумал бы, что оно задействовано в спрайте.
Вообще, я думал, что событие вызывается сразу при вызове addChild, а так приходится лепить ещё доп. события к уже существующим. Вызов инита руками как-то неприятно ощущается. Но всё же решение, спасибо.
__________________
There is no thing in this world that is not simple. |
Часовой пояс GMT +4, время: 07:58. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|