TimerEvent函数忽略定时器延迟

时间:2013-02-04 17:04:52

标签: actionscript-3 events air timer flash-cs6

我正在使用AS3,Flash AIR 3.2 for iOS SDK。我只是在myLoader完成图片加载后才尝试运行部分程序。我有myTimer.start();myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaderComplete);内运行。

目前似乎问题是程序忽略了1000毫秒。程序在<{1}}完成之后正在运行,但它似乎在延迟方面做了自己的事情。

编辑:这里更精确......程序似乎忽略了Timer延迟。即使Timer设置为100000ms。它似乎是在加载图像后立即运行程序的其余部分。

编辑:我仍然在我的Main()中运行我的方法以及代码中的timerListener()。以为我评论了他们。糟糕!

myLoader

1 个答案:

答案 0 :(得分:2)

你并没有真正澄清你的意思是“计时器在做自己的事情。”计时器是短于还是长于你期望的?

我认为这里可能发生的是你的计时器滴答和你的帧速率不同步。如果您熟悉elastic racetrack的概念,您就知道Flash的单线程特性(除非您使用工作线程)意味着屏幕在脚本期间无法更新,反之亦然。这意味着如果您的Timer在显示列表更新时触发,它只需要等到显示列表完成,甚至可能必须等到其他脚本运行,这取决于Flash如何优先处理其队列中的不同内容。 / p>

来自Timer API

  

取决于SWF文件的帧速率或运行时环境   (可用内存和其他因素),运行时可能会调度事件   略微偏移的间隔。例如,如果SWF文件设置为   以每秒10帧(fps)的速度播放,即100毫秒   间隔,但您的计时器设置为以80毫秒触发事件,   该事件将以接近100毫秒的间隔发送。   内存密集型脚本也可以抵消事件。