如何在离开“屏幕”时停止计时器
我有一些计时器在页面上运行,我无法确定在页面运行时离开该页面时如何停止。如何在离开“屏幕”时停止计时器
该调用来自另一个影片剪辑上的一个按钮,该剪辑正在调用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岁时一样跟我说话。谢谢
您可以使用Timer.stop()
呼叫停止Timer
。您可以拨打这个电话你removedHandler
,像这样:
private function removedHandler(event:Event):void {
if (myTimer != null) myTimer.stop();
}
这意味着,你必须保持,以阻止它周围的计时器的参考。在这种情况下,参考文献是myTimer
。
我完全是这样做的,根据我的跟踪者,这个新代码从未运行过。我仍然收到相同的错误信息。 – mrfreddy 2012-04-03 19:27:02
所以你说'removedHandler'永远不会被调用?正在被删除的MovieClip是“Intro”吗?你的问题听起来像是当你进入介绍时发生的问题,而不是你退出时的问题。您可以不用监听'REMOVED_FROM_STAGE',而是直接在'goToIntro'函数中停止定时器。 – 2012-04-03 19:29:52
removedHandler正在运行,但如果myTimer!= null位显然永远不会运行。我看着goToIntro的想法,谢谢! – mrfreddy 2012-04-03 20:17:48
计时器开始在哪里? – Ronnie 2012-04-03 19:08:50
在currentScreen类中添加“eventFromStage”的事件侦听器并停止处理程序中的计时器。 – 2012-04-03 21:50:22