2013-05-22 98 views
2

我使用requestAnimationFrame在我的遊戲中繪製玩家。其中一名球員的速度比其他人快。我跟他做了一些檢查,他告訴我他的顯示器有120Hz的刷新率。我假設這意味着可以更快地處理幀,從而提高移動速度。任何想法如何我可以解決這個問題?requestAnimationFrame刷新率

由於

使用的墊片層低於:

// shim layer with setTimeout fallback 
window.requestAnimFrame = (function(){ 
    return window.requestAnimationFrame  || 
      window.webkitRequestAnimationFrame || 
      window.mozRequestAnimationFrame || 
      window.oRequestAnimationFrame  || 
      window.msRequestAnimationFrame  || 
      function(/* function */ callback, /* DOMElement */ element){ 
      window.setTimeout(callback, 1000/60); 
      }; 
})(); 
+0

不要將遊戲邏輯放在繪製循環中。您的繪圖代碼應該輪詢遊戲狀態,該狀態在單獨的循環中更新。 – apsillers

+0

另外,120Hz刷新率是*物理監視器*可以更新其像素的速率。用戶的瀏覽器可以更新其繪製狀態的速度可能會慢得多,並且可能受CPU性能,內存,總線速度等限制。 – apsillers

+0

好的,謝謝。我有2個循環,一個用於繪製,一個用於更新遊戲邏輯。 – jskidd3

回答

0

​​沒有保證速率。如果它想要的話,它可以在2Hz下激發。

您需要使您的遊戲循環功能與通話間的時間無關。大多數遊戲通過計算渲染步驟之間傳遞的毫秒數來完成此操作,然後根據經過多少時間對遊戲對象進行動畫處理。

0

將requestAnimationFrame想象爲更新/重繪的機會。您仍然應該在更新過程的基礎上花費多少時間。

舉例來說,如果一個球員能夠在1秒內移動100像素和RAF每0.1秒您需要更新10px的每一次