2

对于我的游戏循环和某些动画,我想知道自上次调用 render: 方法以来经过的时间间隔。

为此,我使用 CADisplayLink 并获取当前时间戳并减去最后一次调用的时间戳。这应该给我两个帧/调用之间的正确时间间隔。

在模拟器中运行应用程序时,我得到了各种不同的间隔值,这看起来很好。但是,如果我在 iPad 上运行该应用程序,我只会得到两个不同的间隔值:0.000 和 0.125。大多数情况下,这两个值交替出现。

这是我用来确定间隔的代码。

// Time calculations (for animations and stuff)
_lastCallTime = _currentCallTime;
_currentCallTime = [displayLink timestamp];
float timeInterval = _currentCallTime - _lastCallTime;

NSLog(@"Time since last call: %f", timeInterval);

每次调用 render 方法时都会执行此代码。

这是 iPad 的一些限制,它不会给我的间隔时间提供准确的结果吗?

4

1 回答 1

1

时间戳是双精度的。将任何保存或用作浮点数的变量更改为 NSTimeInterval。当您打印它时,使用 %f (这实际上是 %lf,因为 C 在作为参数传递时将浮点数提升为双精度数)。

于 2012-08-03T16:12:38.887 回答