無名関数をイベントリスナーから削除する

7月 16, 2009 · Posted in ActionScript, Flex 
Post to Google Buzz
このエントリーをはてなブックマークに追加

ActionScriptでイベント登録したリスナーを削除する場合以下のように指定します。

addEventListener(Mouse.Event.CLICK, [関数名])
             ↓
removeEventListener(Mouse.Event.CLICK, [関数名])

しかし、イベントリスナーで無名関数を指定した場合はremove時に指定する関数名がないので、どうやって削除するんだろう・・・
と思っていましたが、削除する方法があるようです!

addEventListener( MouseEvent.CLICK,
function(event:MouseEvent):void{
//イベントリスナーの削除
mc.removeEventListener( MouseEvent.CLICK, arguments.callee);
});

ポイントは「arguments.callee」です。
これにより、現在実行中の関数への参照を取得することができますので、無名関数でも削除できるようになります。

http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/arguments.html

こんなやり方があったんですね。
その他、関数内で「arguments.callee()」を使用することにより、再帰的な処理を実装することも可能となります!

参考
http://blog1.aitacos.com/?p=127
http://hato-style.chu.jp/note/as3_rem_ef.html

Comments

Leave a Reply