【发布时间】:2013-01-24 22:00:10
【问题描述】:
我有一个带有可见运行计时器的游戏,但只能达到小数点后 2 位的准确度 (#.##)。这是框架的限制,还是有解决方法?我正在尝试在此计时器上实现 4-6 位的准确度 (#.######)。
【问题讨论】:
-
有关代码的更多信息,请点击此处:stackoverflow.com/questions/7027896/…
标签: ios cocos2d-iphone timing
我有一个带有可见运行计时器的游戏,但只能达到小数点后 2 位的准确度 (#.##)。这是框架的限制,还是有解决方法?我正在尝试在此计时器上实现 4-6 位的准确度 (#.######)。
【问题讨论】:
标签: ios cocos2d-iphone timing
iOS 上的计时器以 60Hz 的最大频率运行,这就是为什么您只能获得 2 位精度的原因。
您可以通过花时间和活动开始时间来解决问题,然后在活动结束时花时间并计算差异。不过,这次不会考虑帧率下降、暂停和进入后台等因素。
【讨论】:
这是底层系统的限制。 iOS 不是一个实时系统,定时器在所谓的运行循环中被调度,一旦定时器到期就会调度定时器。然而,为了让定时器准确调度,运行循环必须足够频繁地运行并在每次迭代时检查定时器。然而,运行循环也运行其他东西,例如整个事件机制、消息和网络都在运行循环上运行,所以你的计时器不会每隔几纳秒检查一次(而且,运行循环不会持续运行,但会给出一些时间也回到系统)
【讨论】: