在製作偵聽時會使用匿名函數,
不過這樣一來,
要移除這個偵聽可不是將addEventListener改成removeEventListener就能解決,
必須透過arguments類別的callee屬性來達到目的,
callee是目前正在執行中的函數的參照。
具體作法如下面範例:
stage.addEventListener(MouseEvent.CLICK, function(e:MouseEvent){ trace("test"); stage.removeEventListener(MouseEvent.CLICK,arguments.callee); } );
另外,還有一個方便的作法
(出處:http://blog.yoz.sk/2010/06/quick-tip-timer-listeners-doesnt-require-remove/)
EventDispatcher(event.currentTarget).removeEventListener(event.type, arguments.callee);
範例:
stage.addEventListener(MouseEvent.CLICK, function(e:MouseEvent){ trace("test"); EventDispatcher(e.currentTarget).removeEventListener(e.type, arguments.callee); } );
沒有留言:
張貼留言