1
我試圖在node.js和現代web瀏覽器上每隔10ms運行一次遊戲循環。這個版本的Chrome運行正常(1ms的精度內住宿):如何在JavaScript中實現精確的跨平臺遊戲循環?
var nextUpdate = Date.now();
function loop() {
console.log(Date.now());
// update() here
nextUpdate += 10; // ms
setTimeout(loop, Math.max(0, nextUpdate - Date.now()));
}
loop();
然而,setTimeout的是準確的要少得多Firefox和node.js中即使0ms超時也需要比平均10ms更長的時間執行,這會導致循環完全不同步。
什麼是更好的方式來實現一個精確的,跨平臺的JavaScript遊戲循環?
這是非常有用的,但我沒有看到的setTimeout的替代方案,可以爲10ms下火了,忙等待是不是一種選擇。 – doeke 2014-09-21 13:53:57