如何在离开“屏幕”时停止计时器

时间:2012-04-03 18:54:09

标签: actionscript-3

我在页面上运行了一些计时器,当我在页面运行时,当我离开该页面时,我无法弄清楚如何停止。

调用来自另一个影片剪辑上的按钮,该按钮调用Main.as上的一个函数。

Main.as中的

函数执行此操作:

public function goToIntro(){

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



        }

如果在播放带有计时器的任何场景时单击“简介”按钮,则会收到此错误消息。消息

不会马上出现,就像Intro“场景”正在结束并调用下一个场景一样。

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

我在Intro页面上有这个代码,它应该在删除时清理它。

public function Intro() {

            addEventListener(Event.REMOVED_FROM_STAGE, removedHandler);


private function removedHandler(event:Event):void {



}

我无法弄清楚如何从removedHander函数中删除计时器。我尝试删除事件侦听器,但这会导致其他错误消息。如果监听器不为null,我尝试进行测试,然后停止它。这显然从未运行(我使用trace语句来测试它)。我尝试测试计时器是否正在运行然后停止它,但这也没有用。

帮助!

另外,我是动作脚本和编程的完全新手所以可以跟我说话,就像我5岁那样。感谢

1 个答案:

答案 0 :(得分:0)

您可以使用Timer.stop()来停止Timer。您可以在removedHandler中拨打此电话,如下所示:

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

这意味着您必须保留对计时器的引用以便停止它。在这种情况下,引用为myTimer