2013-05-22 55 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的每一次