Javascript requestAnimationFrame刷新率
我正在使用requestAnimationFrame在游戏中绘制玩家。其中一名球员的移动速度比其他人都快。我和他核实了一下,他告诉我他的显示器刷新频率为120hz。我假设这意味着has可以比其他方法更快地处理帧,从而提高移动速度。有什么办法可以解决这个问题吗 谢谢 使用的垫片层如下所示:Javascript requestAnimationFrame刷新率,javascript,Javascript,我正在使用requestAnimationFrame在游戏中绘制玩家。其中一名球员的移动速度比其他人都快。我和他核实了一下,他告诉我他的显示器刷新频率为120hz。我假设这意味着has可以比其他方法更快地处理帧,从而提高移动速度。有什么办法可以解决这个问题吗 谢谢 使用的垫片层如下所示: // shim layer with setTimeout fallback window.requestAnimFrame = (function(){ return window.requestAni
// 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);
};
})();
requestAnimationFrame
没有保证速率。如果它愿意,它可以以2赫兹的频率发射
您需要使游戏循环功能独立于调用之间的时间。大多数游戏都是通过计算渲染步骤之间经过的毫秒数,然后根据经过的时间设置游戏对象的动画。将requestAnimationFrame视为更新/重画的机会。您仍然应该根据经过的时间来确定更新过程
例如,如果一个玩家可以在1秒内移动100px,而皇家空军每.1秒发射一次,你需要每次更新10px,那么就没有保证的帧速率。但是,您可以使用一个简单的计时器强制执行近似的帧速率:正确,
requestAnimationFrame
没有保证的速率,但是您可以使用其回调的timestamp参数测量requestAnimationFrame
调用之间的时间差,然后创建一个动画,计算在这段时间内应该发生什么
此代码笔链接显示了一个例子。不要将游戏逻辑放在绘图循环中。你的绘图代码应该只轮询游戏状态,在一个单独的循环中更新。此外,120Hz刷新率是物理监视器可以更新其像素的速率。用户浏览器更新其绘图状态的速度可能会慢得多,这可能受到CPU性能、内存、总线速度等的限制。谢谢。我有两个循环,一个用于绘图,一个用于更新游戏逻辑。