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

現在の関数への参照が常にあるため、その匿名イベントハンドラー内の匿名イベントハンドラーを削除できます。

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回だけ起動させるネイティブな方法は他にありません。リスナーを削除する必要があります。

于 2012-06-08T13:25:28.267 に答える
2

私の経験では、ほとんどの場合、フラッシュ内の無名関数を避ける方が良いでしょう。

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 に答える
1

はい、できます:

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