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

可以应用许多侦听器,因此仅应删除此侦听器。所以基本上在这个事件被分派之后,对于同一个 LocalConnection 实例可以有另一个监听器。

4

3 回答 3

2

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

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

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

此外,约定是使用小写字母作为变量的开头。

于 2012-06-08T13:36:31.797 回答
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);
});

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

于 2012-06-08T13:25:28.267 回答
1

是的你可以:

Local.addEventListener(StatusEvent.STATUS,function(event:StatusEvent):void{
  IEventDispatcher(event.currentTarget).removeEventListener(event.type, arguments.callee);
});
于 2012-06-08T13:25:46.400 回答