提示:移除不需要的 Timer 事件监听器

转自:http://blog.yoz.sk/2010/06/quick-tip-timer-listeners-doesnt-require-remove/

用处:用于匿名监听函数的 remove,很方便,再也不用担心匿名函数无法被移除的困扰了。

基于分析器(或 net.hires.debug.Stats)你的 Timer 监听器在被移除时却不能被垃圾回收器回收。移除它们所有的引用是一个很好的做法,即使是匿名函数。

package
{
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.TimerEvent;
    import flash.utils.Timer;

import net.hires.debug.Stats;

[SWF(frameRate="60")]

public class WonderflApp extends Sprite
{
public function WonderflApp()
{
addChild(new Stats());
addEventListener(Event.ENTER_FRAME, loop);
}

public function loop(event:Event):void
{
for(var i:uint = 1; i < 100; i++)
{
var timer:Timer = new Timer(100, 1);
timer.addEventListener(TimerEvent.TIMER_COMPLETE,
function onTimer(event:TimerEvent):void{});
timer.start();
}
}
}
} 简单的方法移除匿名函数的监听:

EventDispatcher(event.currentTarget).removeEventListener(event.type, arguments.callee);