据我了解,getTimer()
非常不准确 - 在我自己的机器上,它总是返回一个约为16的乘积的值。 (16,33,50等)
是否有一种简单而有效的方法可以更准确地衡量程序中两个单独调用之间的时差(delta)?
我已经找到了关于这个主题的信息,但我发现的大部分内容似乎都是不必要的。
答案 0 :(得分:4)
编辑:
进一步挖掘,并在同事的帮助下,显然你可以通过使用声音来获得良好的时机。尝试创建一个新的Sound
对象,播放它,然后从返回的position
- 对象中提取SoundChannel
属性。这里也有一些好主意:Stack Overflow - Accurate BPM event listener in AS3
我没试过这个,但你可以尝试使用 要计算相对时间或经过的时间,请参阅flash.utils包中的getTimer()方法。 Date
类并从中提取milliseconds
属性,并使用它。与getTimer相比,我不确定它是多么准确,但它可能值得尝试。有关详细信息,请参阅AS3: Date documentation。但请注意,Date文档明确说明了这一点:
除此之外,我认为你仍然坚持使用getTimer,它返回的数据取决于你当前的操作系统/浏览器。您可能已经检查过这些链接,否则它们将帮助解释问题:
Tinic Uro - Frame Rates in the Flash Player
Stack Overflow - AS3: How accurate are the getTimer() method and the Timer class?