2014-09-21 46 views
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遊戲循環?

回答