Actionscript 3.0:仅调用一次事件并自动删除它们

时间:2012-06-08 13:14:20

标签: actionscript-3 events

var Local:LocalConnection=new LocalConnection();
Local.addEventListener(StatusEvent.STATUS,function(event:StatusEvent):void{
 // This stuff should only be running once
});

可以应用许多侦听器,因此只应该删除它。所以基本上在调度此事件之后,可以有另一个侦听器用于同一个LocalConnection实例。

3 个答案:

答案 0 :(得分:2)

可以删除该匿名事件处理程序中的匿名事件处理程序,因为您始终拥有对当前函数的引用。

var Local:LocalConnection=new LocalConnection();
Local.addEventListener(StatusEvent.STATUS,function(event:StatusEvent):void{
    // This stuff should only be running once
    Local.removeEventListener(StatusEvent.STATUS, arguments.callee);
});

没有其他原生方法可以使事件侦听器只触发一次,必须删除侦听器。

答案 1 :(得分:2)

根据我的经验,在闪存中避免使用匿名函数几乎总是更好:

var local:LocalConnection = new LocalConnection();
local.addEventListener(StatusEvent.STATUS, statusHandler);

function statusHandler(event:StatusEvent):void{
    local.removeEventListener(StatusEvent.STATUS, statusHandler);
}

此外,惯例是在变量的开头使用小写字母。

答案 2 :(得分:1)

是的,你可以:

Local.addEventListener(StatusEvent.STATUS,function(event:StatusEvent):void{
  IEventDispatcher(event.currentTarget).removeEventListener(event.type, arguments.callee);
});