2012-04-03 131 views
0

我有一些计时器在页面上运行,我无法确定在页面运行时离开该页面时如何停止。如何在离开“屏幕”时停止计时器

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

功能做到这一点:

public function goToIntro(){ 

      removeChild(currentScreen); 
      intro = new Intro(); 
      addChildAt(intro,0); 
      currentScreen = 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() 

我在介绍页面上有这样的代码,应该在清除它时进行清理。

public function Intro() { 

      addEventListener(Event.REMOVED_FROM_STAGE, removedHandler); 


private function removedHandler(event:Event):void { 



} 

我想不出如何从removedHander函数中杀死定时器。我试图删除事件监听器,但会导致其他错误消息。如果侦听器不是null,那么我试着做一个测试,然后停止它。这显然永远不会运行(我用trace语句来测试它)。我试着测试一下,如果计时器运行,然后停止,但也没有工作。

帮助!

此外,我是一个完整的动作和编程新手,因此可以像我5岁时一样跟我说话。谢谢

+0

计时器开始在哪里? – Ronnie 2012-04-03 19:08:50

+0

在currentScreen类中添加“eventFromStage”的事件侦听器并停止处理程序中的计时器。 – 2012-04-03 21:50:22

回答

0

您可以使用Timer.stop()呼叫停止Timer。您可以拨打这个电话你removedHandler,像这样:

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

这意味着,你必须保持,以阻止它周围的计时器的参考。在这种情况下,参考文献是myTimer

+0

我完全是这样做的,根据我的跟踪者,这个新代码从未运行过。我仍然收到相同的错误信息。 – mrfreddy 2012-04-03 19:27:02

+0

所以你说'removedHandler'永远不会被调用?正在被删除的MovieClip是“Intro”吗?你的问题听起来像是当你进入介绍时发生的问题,而不是你退出时的问题。您可以不用监听'REMOVED_FROM_STAGE',而是直接在'goToIntro'函数中停止定时器。 – 2012-04-03 19:29:52

+0

removedHandler正在运行,但如果myTimer!= null位显然永远不会运行。我看着goToIntro的想法,谢谢! – mrfreddy 2012-04-03 20:17:48