定时器给出错误AS3

时间:2011-01-27 14:42:10

标签: actionscript-3 mouseover stopwatch

我对计时器有些麻烦。我的目标是在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.

我理解他无法阻止他不认识的计时器。但是我甚至在任何鼠标操作之前都会收到错误。我看错了什么?

有人知道解决方案吗?

2 个答案:

答案 0 :(得分:4)

问题是scope:您将myTimer声明为局部变量。执行timerStart()后将删除引用。

将其设为member variable,一切正常。

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

if (myTimer != null) timerStop();

确保只有在设置了计时器后才会调用它。

答案 1 :(得分: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();
相关问题