狭く浅く!

メモ代わりに使わせていただきます。

arguments

2008-09-17 00:01:25 | ActionScript 3.0
google先生にいろいろ聞いてたら感心した記事があったので。

イベントを定義したけど、第二引数を関数名ではなく関数そのものにした場合。

addEventListener(Event.ENTER_FRAME,function(e:Event):void{trace("hogehoge")});
removeEventListener(Event.ENTER_FRAME, 関数名がない);

関数を定義したのはいいけど、関数名がないため削除できない。

しかし、下のようにすれば、

var i:int = 0;
addEventListener(Event.ENTER_FRAME, function(e:Event):void{
trace("hogehoge"+String(i++));
  if(i > 100) {
    removeEventListener(Event.ENTER_FRAME, arguments.callee);
  }
});

arguments.calleeで現在実行している関数を参照できるので削除できるみたい。

記事元:Unknown Quality
>勝手ながらかなりそのまま書かせてもらいました。

クラス arguments