在Cocos2d环境中运行计时器精度

时间:2013-01-24 22:00:10

标签: ios cocos2d-iphone timing

我有一个带有可见运行计时器的游戏,但只能达到超过小数的2位精度(#。##)。这是框架的限制,还是有解决方法?我试图在这个计时器上达到4-6位精度(#。######)。

2 个答案:

答案 0 :(得分:2)

iOS上的计时器以60Hz的最高频率运行,这就是为什么你只能获得2位精度的原因。

您可以通过花时间和事件开始来解决问题,然后在事件结束时花时间计算差异。这一次不会考虑帧速率下降,暂停和移入后台等事情。

答案 1 :(得分:1)

这是底层系统的限制。 iOS不是实时系统,定时器在所谓的运行循环上进行调度,运行循环一旦到期就调度定时器。但是,对于准确调度的计时器,运行循环必须经常运行并在每次迭代时检查计时器。然而,运行循环也会运行其他东西,例如整个事件机制,消息和网络都在运行循环上运行,因此每隔几纳秒就不会检查您的计时器(同样,运行循环也不会持续运行但是会给出一些时间回到系统)