我正在使用HTML5 canvas和JavaScript开发游戏。
为了给游戏计时,我从现在开始采用系统毫秒,从最后一帧开始减去系统毫秒,这留给我最后一帧渲染的毫秒数。
这很好用,但是如果我在Firefox中打开一个新选项卡,那么画布似乎会被Firefox暂停,当我回来时,当前的系统时间是几秒钟后系统时间到最后一帧发生的一切跳跃,因为它的移动是相对于最后一帧的时间。
我需要一些方法来检测,画布当前没有运行,或者Firefox(当然还有其他浏览器)已经切换到另一个标签,所以我可以暂停我的游戏,并在返回时更新“最后一帧时间”以防止跳跃。
有什么想法吗?
答案 0 :(得分:1)
您还可以使用窗口onblur事件来检测选项卡的更改时间。
答案 1 :(得分:0)
这只是时钟跳跃的一个原因。您仍然容易受到强制进程睡眠,高系统负载,计算机睡眠模式,休眠以及其他十几种情况的影响。
您需要限制时间增量。在我的项目(爱好游戏)中,我发现80ms是功能最大值。
(另外,如果没有上限,碰撞检测会更加困难。)