Flashゲームプログラミング講座 For AS3.0【EventDispatcher クラスについて】
http://hakuhin.hp.infoseek.co.jp/main/as3/event.html#EVENT_02
removeEventListenerでは引数にイベントのタイプと、リスナー自体の参照がなので、無名関数使うと、removeEventListenerできない><
EventDispatcher - Adobe® Flex™ 2 リファレンスガイド
http://livedocs.adobe.com/flex/2_jp/langref/flash/events/EventDispatcher.html#removeEventListener()
これだとできない
addEventListener(Event.ENTER_FRAME, function(e:Event):void{trace("hogehoge")});
removeEventListener(Event.ENTER_FRAME, これがない><);
普通にメソッド定義してやってもいいけど、こんなやり方でもできる
var hoge:Function = function(e:Event):void {trace("hogehoge")}
addEventListener(Event.ENTER_FRAME, hoge);
removeEventListener(Event.ENTER_FRAME, hoge);
追記 2007/07/26 20:10
os9さんのコメントでarguments.callee使えばできるみたいです。
これは思いつかんかった><
http://un-q.net/2007/07/addeventlistener_removeeventlistener.html#comment-6219
arguments - Adobe® Flex™ 2 リファレンスガイド
http://livedocs.adobe.com/flex/2_jp/langref/arguments.html




コメント (2)
arguments.calleeを使えばremoveできますよ。
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);
}
});
こんな感じで。
# Twitterのほうにで書いてしまおうかと思いましたが、やはりこっちに。
投稿者: os9 | 2007年07月26日 18:25
日時: 2007年07月26日 18:25
おー
その発想はなかったっす。
すげー
ありがとうございます!
投稿者: yo-suke | 2007年07月26日 20:03
日時: 2007年07月26日 20:03