2012-04-03 5 views
0

ページが実行中に、そのページから離れたときに停止する方法を理解するのに問題があるページでタイマーを実行しています。"画面"を離れるときにタイマーを停止する方法

この呼び出しは、Main.asの関数を呼び出す別のムービークリップのボタンから発生しています。タイマーを持つ任意のシーンが再生されている間、私はイントロボタンをクリックした場合、私は、このエラーメッセージが表示されます

public function goToIntro(){ 

      removeChild(currentScreen); 
      intro = new Intro(); 
      addChildAt(intro,0); 
      currentScreen = intro; 



     } 

:Main.asで

機能は、これを行います。メッセージ

がすぐに表示されず、イントロの「シーン」が終了して次のシーンを呼び出すのと同じように表示されます。

TypeError: Error #1009: Cannot access a property or method of a null object reference. 
    at MethodInfo-202() 
    at flash.utils::Timer/_timerDispatch() 
    at flash.utils::Timer/tick() 

私は、このコードをイントロページに記載しています。これは、このコードを削除したときに、そのコードを掃除することを想定しています。

public function Intro() { 

      addEventListener(Event.REMOVED_FROM_STAGE, removedHandler); 


private function removedHandler(event:Event):void { 



} 

私は、removedHander関数からタイマーを削除する方法を理解できません。イベントリスナーを削除しようとしましたが、他のエラーメッセージが表示されます。リスナーがnullでない場合はテストを行い、それを停止しました。それは明らかに実行されない(私はそれをテストするためにトレースステートメントを使用した)。私は、タイマーが.runningであったかどうかをテストしてみましたが、それを止めました。

ヘルプ!

また、私はactionscriptとプログラミングの完全な初心者ですので、私は5歳のように私に話すのは大丈夫です。ありがとう

+0

ここで、タイマーは起動していますか? – Ronnie

+0

あなたのcurrentScreenクラスの中に "removedFromStage"のイベントリスナーを追加し、タイマーをハンドラで停止します。 –

答えて

0

Timer.stop()コールを使用してTimerを停止することができます。あなたはそのように、あなたのremovedHandlerでこの呼び出しを行うことができます。

private function removedHandler(event:Event):void { 
    if (myTimer != null) myTimer.stop(); 
} 

これは、あなたがそれを止めるために周りのあなたのタイマーへの参照を保持しなければならないことを意味します。この場合、参照番号はmyTimerです。

+0

私はかなり正確に、そして私のトレーサーによれば、その新しいコードは決して走らなかった。そして、私はまだ同じエラーメッセージを持っています。 – mrfreddy

+0

あなたは 'removedHandler'は決して呼び出されないと言っていますか? 'Intro'は削除されているMovieClipですか?あなたの質問は、あなたがイントロに出たときに問題が起こるように聞こえます。 'REMOVED_FROM_STAGE'をリッスンする代わりに、' goToIntro'関数でタイマーを直接停止することもできます。 –

+0

removedHandlerは実行されていますが、If myTimer!= nullビットは明らかに実行されません。私はgoToIntroのアイデアを見て、ありがとう! – mrfreddy

関連する問題