在 scheduleUpdate 之后,update:(ccTime)dt 每秒会被调用 60 次,如果一次 update 方法的运行时间超过 1/60 秒怎么办?下次通话会被取消吗?
问问题
290 次
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 回答