0

我在 actionscript 中有一个计时器类,如下所示:

        public class AGTimer {

                    public var myTimer:Timer ;
                    public var done:Boolean = false;
                    public var timer_disable:Boolean = false;
                    public var started:Boolean = false;

            public function AGTimer(num:Number = 0) {
                    this.timer_disable = false;
                    if (num != 0 ) timerStart(num);
                    // constructor code

            }
            public function timerStart(num:Number):void {

                    myTimer = new Timer(num * 1000, 1);
                    myTimer.addEventListener(TimerEvent.TIMER, runOnce);
                    myTimer.start();
                    started = true;
                    done = false;
            }

            public function runOnce(e:TimerEvent):void {
                    done = true;
            }

            public function timerDone():Boolean {

                    if (done && ! timer_disable) return true;
                    else if (!started ) return true;
                    else return false;
            }
    }

我在一个数组中有几个。我用它们的索引号来引用它们。有时我会启动一个计时器并让它离开,然后在我有机会检查它之前,我通过调用'new AGTimer()'并创建一个新的来删除它。在删除计时器本身后,是否会以某种方式调用来自 actionscript Timer 对象的回调?如果真的发生了,我会怎么做?我正在尝试查找错误并正在考虑此类问题。我会看到什么样的错误?

4

1 回答 1

0

是的,即使没有在某处引用计时器,它也会继续运行回调。您必须为其删除计时器的事件侦听器才能将其删除。

基本上是这样的:

private function destroyTimer():void {
    if(myTimer) {
        myTimer.removeEventListener(runOnce);
        myTimer.stop();
        myTimer = null;
    }
}
于 2013-09-17T17:11:06.990 回答