我正在使用 HTML5 画布开发游戏,所以我有使用 requestAnimationFrame 调用的游戏循环。当我使用 Chrome 或 IE 时,它运行良好,稳定 60 fps 并且流畅。当我在 Firefox 上运行它时,问题就开始了。FPS 计数器超过 60 fps(设置在 65-70 左右),并且游戏体验一点也不流畅。如果它实际上运行超过 60 fps,我想我可能会丢失一些帧。这是我用于游戏循环的代码:
window.requestAnimFrame = (function() {
return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame ||
function(callback) {
window.setTimeout(callback, 1000 / 60);
};
})();
gameloop=function(){
//Here I do my calculations and drawings
//I do this to calculate FPS
thisLoop=new Date;
var fps=1000/(thisLoop-lastLoop);
lastLoop=thisLoop;
requestAnimFrame(gameloop());
}
你对此有什么解释吗?这甚至可能是正常的,但我玩其他游戏,他们在 Firefox 上似乎根本没有这样的行为。
我试过这个解决方案:
http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
但最终结果是一样的。