2011-01-27 10 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

+0

メンバー変数を作成するにはどうすればよいですか?それは動作していないようです。 – Proto

+0

私は自分の答えを編集して、Flashドキュメントへの2つのリンクを追加しました。彼らは物事を明らかにする必要があります。 – weltraumpirat

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(); 
関連する問題