CADisplayLink时间戳在设备上表现异常

时间:2012-08-03 15:00:21

标签: iphone objective-c ios timer cadisplaylink

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

为此,我使用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的一些限制,它不会给我准确的间隔结果吗?

1 个答案:

答案 0 :(得分:1)

时间戳是双倍的。将任何保存或使用它的变量更改为NSTimeInterval。当你打印它时使用%f(这实际上是%lf,因为当作为参数传递时,C促进浮动加倍)。