在我的一个表单中,我使用以下代码添加了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);
但这也行不通。
请有人帮我解决这个问题。
答案 0 :(得分:0)
试试这个。
在主应用程序中创建运行时弹出窗口:
PopUpManager.createPopUp(this, MyPopUp, true);
MyPopUp - mx:来自MyPopUp.mxml的TitleWindow 在MyPopUp.mxml中的OnInit中添加任何侦听器:
_listener.addEventListener(DBEvent.Update_Result, onUpdateResults);
单击任何按钮(按钮的单击事件或任何按钮)时关闭弹出窗口:
PopUpManager.removePopUp(this);