2011-01-27 23 views
0

我在計時器上遇到了一些麻煩。我的目標是在MOUSE_OVER時調用它,並在MOUSE_OUT時將其殺死。計時器給出錯誤AS3

功能啓動定時器:

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

問題是scope:您正在將myTimer聲明爲局部變量。執行timerStart()後,該引用將被刪除。

使之成爲member variable,一切都應該正常工作。

哦,還有:執行此操作在rollOutHandler:如果計時器已設置

if (myTimer != null) timerStop(); 

,以確保它僅被調用。

+0

我要去試一試。謝謝! – Proto 2011-01-27 14:46:04

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();