0

我的计时器有点问题。我的目标是在 MOUSE_OVER 时调用它,并在 MOUSE_OUT 时杀死它。

启动定时器的功能:

   public function timerStart():void {
                var myTimer:Timer = new Timer(1000, 1); // 1 second
                myTimer.addEventListener(TimerEvent.TIMER, runOnce);
                myTimer.start();
            }

停止定时器的功能:

    public function timerStop():void {
        myTimer.stop();
    }

调用定时器的函数:

public function rollOverHandler(e:MouseEvent = null):void 
        {

        timerStart();
}

调用停止计时器的函数:

    internal final function rollOutHandler(e:MouseEvent = null):void 
    {
    timerStop(); //this one created the error message
}

无论我尝试什么,我都会不断收到此错误消息:

1120: Access of undefined property myTimer.

我理解他无法停止他不认识的计时器这一事实。但我什至在任何鼠标操作之前都收到错误消息。我看错了什么?

有人知道解决方案吗?

4

2 回答 2

4

问题是范围:您将 myTimer 声明为局部变量。在执行 timerStart() 后,该引用将被删除。

使它成为一个成员变量,一切都应该正常工作。

哦,还有:在 rollOutHandler 中执行此操作:

if (myTimer != null) timerStop();

确保仅在设置了计时器时才调用它。

于 2011-01-27T14:44:35.783 回答
0

感谢 Weltraumpirat!你的回答刚刚拯救了我的一天!

public static var myTimer:Timer;
        public function timerStart():void {
             // 1 second
            myTimer = new Timer(1000, 1)
            myTimer.addEventListener(TimerEvent.TIMER, runOnce);
            myTimer.start();
        }

        public function timerStop():void {
            myTimer.stop();
        }


        public function rollOverHandler(e:MouseEvent = null):void 
        {

        timerStart();
于 2011-01-27T21:43:37.160 回答