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

ありがとうウェルトラウンピラト!あなたの答えは私の一日を救いました!

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 に答える