1

在 scheduleUpdate 之后,update:(ccTime)dt 每秒会被调用 60 次,如果一次 update 方法的运行时间超过 1/60 秒怎么办?下次通话会被取消吗?

4

1 回答 1

5

帧率下降。什么都不会被取消。

在 60 fps 时,cocos2d 和您的代码处理渲染帧所需的所有内容,包括所有 OpenGL 绘图操作,正好是 1/60 秒。完成这一切需要 0.016666666 秒。

如果一个更新周期比这更长,下一帧将在 0.03333333 秒后渲染,如果多个帧连续需要更长的处理时间,则将帧速率降低到 30 fps。前提是一切都在那个时间内完成,否则下一帧更新会延迟到 0.05 秒甚至 0.06666666 秒。

使用 cocos2d 只能获得 60、30、20 或 15 fps 的帧率,因为它使用 CADisplayLink 与屏幕刷新率同步更新。cocos2d 中的帧率计数器可能显示 40 fps 或其他值,因为它是多个帧的平均值。

于 2013-01-19T14:28:24.450 回答