我正在使用 JavaScript 开发游戏,并且我有一个游戏循环设置requestAnimationFrame
:
loop: function () {
game.updateSomething();
if (game.running) {
game.tick++;
requestAnimationFrame(game.loop);
}
},
我的游戏有一个工作循环,我可以移动物体,这很好,但是如果我想将这个循环内的动作限制为每秒,我该如何实现呢?我是否必须用 记下每个刻度的时间new Date()
,然后将其与我在上一个循环生成中计算的时间进行比较,并测试差异?像这样:
latest: null,
loop: function () {
var last = this.latest;
this.latest = new Date().getTime();
var every = 200;
if (Math.floor(last/every) != Math.floor(this.latest/every)) {
console.log('do something');
game.updateSomething();
};
if (game.running) {
game.tick++;
requestAnimationFrame(game.loop);
}
},
这看起来真的很乱,即使我将它包装在一个函数中,当该滴答的地板时间不同时返回true,它只是感觉不对......我尝试谷歌搜索,但我找不到任何解决这个问题的方法具体来说。
其他 JavaScript 游戏如何处理需要定期发生的事情,这些事情也存在于主游戏循环中?