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>
答
你可以使用像这样的方式手动调用关闭:
dispatchEvent(new CloseEvent(CloseEvent.CLOSE, true, false));
PopUpManager.removePopUp(this);
然后添加一个事件侦听器,查看弹出窗口closeevent.close
然后做你的工作。
适合我。
这就是我原先想的,但是当我查看它时,CloseEvent只发生在点击“X”时。我实现的解决方案是使用APPLY和CANCEL事件创建一个DialogBaseEvent类,并在用户点击APPLY或CANCEL时触发这些类。然后,我使用这些事件触发关闭,正确地移除我需要移除的事件侦听器。不理想,但在我的情况下,它将达到其目的。 – WeeJavaDude 2010-05-03 23:46:30