【问题标题】:CADisplayLink Timestamp acts strange on deviceCADisplayLink Timestamp 在设备上的行为很奇怪
【发布时间】:2012-08-03 15:00:20
【问题描述】:

对于我的游戏循环和某些动画,我想知道自上次调用 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);

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

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

【问题讨论】:

    标签: iphone objective-c ios timer cadisplaylink


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2014-02-03
      • 2012-04-23
      • 1970-01-01
      • 2015-10-17
      • 1970-01-01
      • 1970-01-01
      • 2011-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多