requestAnimationFrame刷新率

时间:2013-05-22 15:09:59

标签: javascript

我正在使用requestAnimationFrame在我的游戏中绘制玩家。其中一名球员比其他人更快。我跟他做了一些检查,他告诉我他的显示器刷新率为120hz。我假设这种方法可以比其他方法更快地处理帧,从而提高移动速度。关于我如何解决这个问题的任何想法?

由于

使用的垫片层如下:

// 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);
          };
})();

4 个答案:

答案 0 :(得分:1)

没有保证帧率。但是,您可以使用简单的计时器强制使用近似帧速率:How to solve different FPS in requestAnimationFrame on different browsers?

答案 1 :(得分:0)

requestAnimationFrame没有保证费率。如果它想要它可以以2Hz发射。

您需要使游戏循环功能与呼叫之间的时间无关。大多数游戏通过计算渲染步骤之间经过的毫秒数,然后根据已经过了多长时间制作游戏对象来实现此目的。

答案 2 :(得分:0)

将requestAnimationFrame视为更新/重绘的机会。您仍应将更新过程建立在已经过了多长时间的基础上。

例如,如果玩家可以在1秒内移动100px并且RAF每隔0.1秒发射一次,则需要每次更新10px

答案 3 :(得分:0)

正确,requestAnimationFrame 没有保证速率,但您可以使用它的回调的时间戳参数测量 requestAnimationFrame 调用之间的时间差,然后创建一个动画来计算应该发生的情况时长。

此 CodePen 链接显示了该 https://codepen.io/sassano/pen/wvgxxMp 的示例。