FLEX: Как узнать, когда был создан диалог? Закрыть PopUpManager - PullRequest
2 голосов
/ 01 мая 2010

Есть ли простой способ выяснить, когда диалог закрывается, который был создан с помощью PopUpManager.Я бы заподозрил какой-то тип сообщения или механизм обратного вызова, но, похоже, его нет.В одном случае я использую компонент WindowTitle и событие, которое вызывает CLOSE, только если кто-то нажимает на закрытие и не выдает сообщения, когда диалоговое окно фактически закрывается.

Ответы [ 2 ]

2 голосов
/ 01 мая 2010

Не уверен, что это решение для всех нужд. Но, если вы используете TitleWindow, просто прослушайте событие close:

Примерно так:

var win : IFlexDisplayObject = PopUpManager.createPopUp(Application.application as DisplayObject, TitleWindow, false) as IFlexDisplayObject;
win.addEventListener(CloseEvent.CLOSE, onClose);
PopUpManager.centerPopUp(win);

И окно заголовка должно быть примерно таким:

<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" showCloseButton="true" close="closeHandler(event)">
<mx:Script>
    <![CDATA[
        import mx.events.CloseEvent;
        import mx.managers.PopUpManager;

        protected function closeHandler(event:CloseEvent):void
        {
            PopUpManager.removePopUp(this);
        }           
    ]]>
</mx:Script></mx:TitleWindow>
1 голос
/ 18 января 2012

Вы можете вручную вызвать закрытие, используя что-то вроде этого:

dispatchEvent(new CloseEvent(CloseEvent.CLOSE, true, false));
PopUpManager.removePopUp(this);

Затем добавьте прослушиватель событий, который просматривает всплывающие окна closeevent.close, и выполните свою работу после этого.

У меня работает.

...