![]() |
Задержка событий.
Сначала я инициализирую класс опций, который инициализирует все свои поля по ADDED_TO_STAGE
Код AS3:
Код AS3:
Выходит, это происходит с задержкой? Как же тогда поймать момент, когда init проинициализирован? Далее в конце init отсылаю событие Код AS3:
Код AS3:
Что я делаю не так? update: Убрал removeChild в обработчик события, и заработало... Тоесть, событие ADDED_TO_STAGE, оказывается, вызывается не addChild напрямую, и происходит где-то через кадр?(Потому, что ENTER_FRAME успевает сработать разок) Как это вообще по нормальному то делается? У меня есть класс Options, дисплейный, по иниту инициализирует свои поля, но в конструкторе инициализировать нельзя потому, что он унаследован от Window, который рисует задний фон в своём ините, и выходит, что тогда элементы будут под задним фоном. Если переместить рисование фона в конструктор, то получается, что изменить параметры windowWidth и windowHeight невозможно, пробовл без super.windowWidth, не работает, с super пишет, что до вызова конструктора суперкласса this, super и всё такое запрещено. А фон нужно рисовать по размерам окна(логично). Оверрайда переменных не существует, что делать? Нужно проинициализировать Options и сразу же пользоваться его полями. |
Я обычно заводил отдельный публичный метод init() и свойство isInit, указывающее был ли экземпляр уже проинициализирован.
|
А почему событие, которое я диспатчу в методе init после всего кода вызывает обработчик тогда, когда ничего не проинициализировано? Чушь какая-то.
Почему перенос removeChild в обработчик этого события помог? |
Можешь изолировать проблему и выложить? А то трудно во всё это вникнуть. Ещё событие: flash.events.Event.ACTIVATE нельзя использовать в своей логике так как оно является широковещательным и зарезервировано для других целей.
И на всякий случай уточню, речь идёт о нативном дисплей листе и диспетчере? Лучше выложить проблемный код целиком. |
Действительно, поменял ACTIVATE на кастомное, и перестало вообще вызываться) Я и не подумал бы, что оно задействовано в спрайте.
Вообще, я думал, что событие вызывается сразу при вызове addChild, а так приходится лепить ещё доп. события к уже существующим. Вызов инита руками как-то неприятно ощущается. Но всё же решение, спасибо. |
| Часовой пояс GMT +4, время: 22:59. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.