呼び出されるたびに新しいタイマーを作成する関数では、これを処分する正しい方法ですか?GCでタイマーを利用できますか?
private var _timers:Vector.<Timer> = new Vector.<Timer>;
private var _timer:Timer
private function timer():void
{
_timer = new Timer(10000, 1);
_timers.push(_timer);
_timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimer, false,0,true);
_timer.start();
}
private function onTimer(e:TimerEvent):void
{
e.target.removeEventListener(TimerEvent.TIMER_COMPLETE, onTimer);
_timers[0] = null;
_timers.shift();
}
私はこの1つの真の答えだと思います。私は、タイマーがまだ実行されている場合、それはどこかに内部参照を持っていると思います。 1行の_timers [0] = nullは不要です。なぜなら、あなたはそれをシフトアウトしているからです。 – ansiart
彼はランニングカウントを '1'に設定しています。つまり、' 'stop()'を呼び出す必要はありません。すべての参照を削除するだけでGCが残りの部分を処理します – xLite