2

我正在使用 HTML5 画布和 JavaScript 开发游戏。

为了给游戏计时,我从现在开始计算系统毫秒数,从最后一帧发生时减去系统毫秒数,这样我就得到了最后一帧渲染所用的毫秒数。

这工作正常,但如果我在 Firefox 中打开一个新选项卡,画布似乎被 Firefox 暂停,当我回来时,当前系统时间比系统时间晚几秒钟,最后一帧发生并且一切都跳转,因为它的移动是相对于最后一帧时间的。

我需要一些方法来检测画布目前没有运行,或者 Firefox(当然还有其他浏览器)已经切换到另一个选项卡,所以我可以暂停我的游戏,并在返回时更新“最后一帧”时间'以防止跳跃。

有任何想法吗?

4

2 回答 2

1

您还可以使用 window onblur 事件来检测选项卡何时更改。

于 2012-05-28T10:28:09.903 回答
0

这只是时钟跳变的原因之一。您仍然容易受到强制进程睡眠、高系统负载、计算机睡眠模式、休眠和其他十几种情况的影响。

您需要限制时间增量。在我的项目(爱好游戏)中,我发现 80 毫秒是功能最大值。

(此外,没有上限,碰撞检测要困难得多。)

于 2012-05-28T12:07:12.070 回答