#apache-flex #actionscript-3
#apache-flex #actionscript-3
Вопрос:
Отправляется ли событие, когда модальное окно выводится на передний план в Flex? В принципе, есть два случая, когда я хотел бы прослушать это событие:
- При первом создании модального (хотя теоретически здесь может быть достаточно creationComplete / show / etc.)
- Когда пользователь выводит модал, которого нет спереди, на передний план, нажав на него.
В моем случае всплывающие окна, с которыми я работаю, являются потомками TitleWindow, и прослушивание focusIn, похоже, работает ненадежно.
Ответ №1:
Попробуйте прослушать события «addedPopUp» и «BringToFront» из PopUpManagerImpl.getInstance()
:
import mx.managers.PopUpManagerImpl;
PopUpManagerImpl.getInstance().addEventListener("addedPopUp", addedPopUpHandler);
PopUpManagerImpl.getInstance().addEventListener("bringToFront", bringToFrontHandler);
private function addedPopUpHandler(event:DynamicEvent):void
{
trace("Added popup: " event.window);
}
private function bringToFrontHandler(event:DynamicEvent):void
{
trace("Front: " event.popUp);
}
Комментарии:
1. В дополнение к этому, я задаюсь вопросом, зачем вам вообще нужно прослушивать событие. Вы тот, кто создает всплывающее окно и управляет им; если вы хотите, чтобы событие отправлялось, я бы просто отправил пользовательское событие.
2. PopUpManagerImpl.getInstance() не является EventDispatcher, поэтому я получаю ошибки при попытке вызвать addEventListener в нем.
3. @J_A_X — Причина, по которой я хочу этого, заключается в том, что в любой момент у пользователя может появиться несколько немодальных всплывающих окон, и я хочу получать уведомления, когда они выводят одно на передний план.
4. Попробуйте
EventDispatcher(PopUpManagerImpl.getInstance()).addEventListener
? Если не повезло, тоPopUpManagerImpl.getInstance()["addEventListener"]
.
Ответ №2:
Вы можете прослушать событие.Для этого в ваш UIComponent (модальный) добавлен Stage.
Ответ №3:
В итоге я прослушал «focusIn» и «focusOut». Intellisense от Flex Builder не предлагает их в качестве событий, которые вы можете прослушивать, но оказывается, что вы можете. Спасибо за помощь.