Flash中的计时准确性

时间:2010-09-13 16:12:25

标签: flash actionscript-3 actionscript timing benchmarking

有谁知道闪存时序的精确程度以及识别客户端监视器刷新率的能力?我需要能够以高达10毫秒的响应时间准确度计算持续时间。此外,如果它关闭,是否有办法根据显示器刷新率和动作校准响应,以确保值尽可能接近精确?任何信息都会很棒!更好的是现有基准测试的一些例子。

更新

我发现这篇帖子很有帮助,但想看看是否还有其他人在这个主题上添加了其他内容。

AS3: How accurate are the getTimer() method and the Timer class?

http://www.kaourantin.net/2006/05/frame-rates-in-flash-player.html

2 个答案:

答案 0 :(得分:2)

无法检测到它,并且Flash Player不使用vsync,因此计算更新时间不会有多大用处。

这完全取决于你想用它做什么。如果您只是在屏幕上计时,请使用getTimer,因为它精确到1ms - 您绝对不需要知道显示器刷新率。

此外,Timer类对于调用是不可靠的,因此要么滚动自己的计时器类,要么在onEnterFrames上使用getTimer(最准确的方式来进行屏幕更新)。

答案 1 :(得分:1)

即使在AIR中,您也无法从Flash获得显示器刷新率。是的,帧可以在不同的时间渲染(特别是在重负载下)。 AFAIK,你准确时间的最佳来源是getTimer()。基于ENTER_FRAME中的getTimer()的动画是平滑的(假设帧速率足够高),尽管帧速率可能会有所不同。

编辑:您的代码有机会在帧更改之间执行,因此将帧速率设置为高并保持较小的负载。这样你就有更多的机会及时回应。我相信getTimer()的准确度最高可达1毫秒,但有点难以检查。运行程序几个小时,然后比较getTimer()和实际传递的时间?..