FLEX:如何知道何时创建对话框抛出PopUpManager关闭

FLEX:如何知道何时创建对话框抛出PopUpManager关闭

问题描述:

当通过PopUpManager创建的对话框关闭时,是否有一种简单的方法可以一致地找出结果。我会怀疑某种类型的消息或回调机制,但似乎没有。在一种情况下,我使用WindowTitle组件和事件,如果有人在关闭对话框时按下了close并且不给出消息,则只会触发CLOSE。FLEX:如何知道何时创建对话框抛出PopUpManager关闭

不知道这是否是所有需求的解决方案。但是,如果您使用的是TitleWindow中,只听关闭事件:

事情是这样的:

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> 
+0

这就是我原先想的,但是当我查看它时,CloseEvent只发生在点击“X”时。我实现的解决方案是使用APPLY和CANCEL事件创建一个DialogBaseEvent类,并在用户点击APPLY或CANCEL时触发这些类。然后,我使用这些事件触发关闭,正确地移除我需要移除的事件侦听器。不理想,但在我的情况下,它将达到其目的。 – WeeJavaDude 2010-05-03 23:46:30

你可以使用像这样的方式手动调用关闭:

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

然后添加一个事件侦听器,查看弹出窗口closeevent.close然后做你的工作。

适合我。