如何使用Action Script添加Mate Listeners

时间:2010-11-23 04:01:13

标签: flex actionscript-3 flex3 popup mate-flex-framework

在我的一个表单中,我使用以下代码添加了Mate Listeners

<mate:Listener type="{DBEvent.Update_Result}" receive="{onUpdateResults(event)}"/>

我将此表单显示为弹出窗口。发生的事情是,onUpdateResults方法第一次只按预期执行了一次。然后我关闭弹出窗口并重新打开它。这次onUpdateResults方法调用两次,然后是4time,依此类推......

经过大量的谷歌搜索后,我发现即使我们删除/关闭弹出窗口,Mate Listeners仍然处于活动状态。我尝试了弱引用,使用PopupManager.RemovePopup关闭弹出窗口等等。没有任何效果。

然后我想到使用动作脚本手动注册和取消注册配合侦听器。所以,我尝试了以下代码

var _listener:Listener= new Listener();

_listener.addEventListener(DBEvent.Update_Result,onUpdateResults);

取消注册...

_listener.removeEventListener(DBEvent.Update_Result,onUpdateResults);

但这也行不通。

请有人帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

试试这个。

在主应用程序中创建运行时弹出窗口:

PopUpManager.createPopUp(this, MyPopUp, true);

MyPopUp - mx:来自MyPopUp.mxml的TitleWindow 在MyPopUp.mxml中的OnInit中添加任何侦听器:

_listener.addEventListener(DBEvent.Update_Result, onUpdateResults);

单击任何按钮(按钮的单击事件或任何按钮)时关闭弹出窗口:

PopUpManager.removePopUp(this);