Просмотр полной версии : Порядок выполнения AS3 кода.
zorexundra
25.02.2011, 11:23
Здравствуйте! Подскажите, пожалуйста!
Есть код:
mx.managers.PopUpManager.addPopUp(myPopUp, this, true);
// "какой-то код"
Как заставить "какой-то код" выполняться после добавления myPopUp на сцену?
Astraport
25.02.2011, 11:50
В самом myPopUp
creationComplete="init(event)"
private function init(event:Event):void
{
//your code;
}
Так вот там, где вы написали (в комментарии), и будет после того, как попап добавили на сцену. Только не нужно писать имена классов с пакетами:
mx.managers.PopUpManager.addPopUp(); ->
перед описанием класса:
import mx.managers.PopUpManager;
внутри класса:
PopUpManager.addPopUp();
zorexundra
28.02.2011, 10:53
Astraport,
При добавлении myPopUp на сцену методом mx.managers.PopUpManager.addPopUp()
событие в myPopUp:
Event.INIT - не происходит
Event.ADDED - происходит до визуального добавления myPopUp на сцену
Event.ADDED_TO_STAGE - происходит до визуального добавления myPopUp на сцену
Event.ACTIVATE - не происходит
Event.COMPLETE - не происходит
Event.OPEN - не происходит
FlexEvent.CREATION_COMPLETE - не происходит
FlexEvent.INIT_COMPLETE - не происходит
FlexEvent.INITIALIZE - не происходит
FlexEvent.SHOW - не происходит
FlexEvent.ADD - происходит до визуального добавления myPopUp на сцену
FlexEvent.VALID - не происходит...
Устал перебирать... Есть ещё варианты?
wvxvw,
Нет. Это не так. В комментарии "энергоёмкий" код, и сперва выполняется он, а потом, с задержкой, на сцене появляется PopUp, который должен оповещать пользователя об этой самой задержке.
Event.INIT - не происходит
С чего ему происходить? Это событие отправляется LoaderInfo при инициализации загрузки.
Event.ADDED - происходит до визуального добавления myPopUp на сцену
Событие отправляется при добавлении объекта в контейнер.
Event.ADDED_TO_STAGE - происходит до визуального добавления myPopUp на сцену
Объект добавлен на сцену, но updateDisplayList у него еще не вызван.
FlexEvent.CREATION_COMPLETE - не происходит
FlexEvent.INIT_COMPLETE - не происходит
FlexEvent.INITIALIZE - не происходит
Они уже произошли, вы передаете в PopUpManager уже готовый компонент.
FlexEvent.SHOW - не происходит
Отправляется при изменении visible
Устал расписывать, читайте про события.
Нет. Это не так.
Это так. Попап добавлен на сцену, просто еще не отрисован.
В комментарии "энергоёмкий" код
"энергоёмкий" код можно разбить на несколько не "энергоемких" и выполнить по ENTER_FRAME, например. Или вы предпочитаете подвисающие приложения? Или используйте createPopUp и отлавливайте CREATION_COMPLETE или слушайте UPDATE_COMPLETE.
zorexundra
28.02.2011, 18:11
alatar, спасибо за ответ!
Изучать события гораздо дольше, нежели перебрать варианты для конкретного случая.
Разбиения операций по кадрам мне не требуется, но наоборот, требуется скорейшее выполнение кода (код выполняется по закрытию приложения пользователем и время отклика должно быть минимальным).
А метод createPopUp я не могу применить, потому что просто не знаю, как преобразовать IFlexDisplayObject в Class... :(
Это так. Попап добавлен на сцену, просто еще не отрисован.
:) вы уже сыты, просто ещё не пообедали.
Изучать события гораздо дольше, нежели перебрать варианты для конкретного случая.
Брутфорс программирование? :confused:
потому что просто не знаю, как преобразовать IFlexDisplayObject в Class...
Вы же как-то создали, то что у вас в myPopUp.
вы уже сыты, просто ещё не пообедали.
Про жизненный цикл компонентов хоть что нибудь слышали?
zorexundra
28.02.2011, 18:39
1. Нет, иезуитство: все средства хороши :)
2. Этот элемент создан в визуальной среде Flash Builder-а и уже находится на сцене.
3. Кажется я ясно выразился, что мне необходимо своевременное получение визуального представления элемента PopUp.
мне необходимо своевременное получение визуального представления элемента PopUp.
Кажется я ясно выразился, слушайте UPDATE_COMPLETE.
zorexundra
28.02.2011, 18:59
alatar, ещё раз спасибо за ответ!
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.