0

在我的一种形式中,我使用了以下代码来添加 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);

但这也行不通。

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

4

1 回答 1

0

尝试这个。

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

PopUpManager.createPopUp(this, MyPopUp, true);

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

_listener.addEventListener(DBEvent.Update_Result, onUpdateResults);

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

PopUpManager.removePopUp(this);
于 2010-11-26T18:36:41.547 回答