我创建了我的游戏循环:
var lastTime = 0;
var nextTime = 0;
function prepareUpdate(callback) {
currentTime = Date.now();
nextTime = mathMax(lastTime + (1000 / targetFPS), currentTime);
return setTimeout(function prepUpdate() {
callback(lastTime = nextTime);
}, nextTime - currentTime);
};
function callUpdate() {
prepareUpdate(callUpdate);
updateGameLoop();
};
callUpdate();
我这样做是因为我遇到了RequestAnimationFrame的一些问题。但是现在由于垃圾收集器每5秒钟踢一次,我遇到了一些滞后现象。我想知道更新代码是否导致这种情况,因为我按照我的方式返回setTimeout函数。
有没有办法重写这个来防止这种行为?