firefox和chrome之间的游戏循环不一致

时间:2017-11-07 08:21:25

标签: javascript

https://imgur.com/gallery/LKrGC

这是我为演示拍摄的动画GIF。 只使用320行代码,结构简单。

问题是,当我在Firefox中打开它时,它会严重干扰。 在chrome中,它工作得很好。 我想知道为什么会这样。

起初我认为它与我的代码有关。 因为每个函数内部都有很多局部变量。 所以我删除了它们,现在它在Chrome中运行良好。 但它仍然发生在Firefox中。 我不知道如何解释devTools的性能概况。

Obj Input      // contains vars, funcs,
Obj Game       // contains vars, funcs,
Obj Graphic    // contains vars, funcs,

var RAF = requestAnimationFrame;
func main(){
    //lastTime, now, delta for calculating x, y values
    ...
    Input.update(delta);
    Game.process(delta);
    Graphic.draw();
    ...
    RAF(main);
}
main();

这是我的代码的简化版本。

我已经搜索过如何使用RAF控制FPS,如何使用devTools但是,我对这种行为一无所知。任何人都可以启发我吗?

https://imgur.com/a/IyIIT firefox / chrome个人资料图片。

更新:

我在firefox,firefox devEdition,chrome上测试过它。只有扩展显示器中的firefox才会导致此问题。我甚至减小了画布的大小,并确认这与浏览器的性能和代码优化无关。

我的猜测是,当firefox浏览器从另一个监视器移动到一个监视器时,它会尝试重新调整处理它的方式-rAF,重新绘制等等。而这样做,firefox无法正常处理它扩展监视器。

这确实非常有趣,我想深入研究。但很明显,我可以得出结论。

0 个答案:

没有答案