Отправляет ли Flex событие, когда всплывающее окно выводится на передний план?

#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 не предлагает их в качестве событий, которые вы можете прослушивать, но оказывается, что вы можете. Спасибо за помощь.