是想控制我的动画的FPS一个很好的理由继续使用setTimeout而不是requestAnimationFrame
Is wanting to control the FPS of my animation a good reason to continue using setTimeout in stead of requestAnimationFrame?
我想知道我是否应该把游戏切换到requestAnimationFrame。如果仍然有理由这样做,因为我已经读到setTimeout()现在也暂停当你切换标签在主要浏览器。
无论如何,假设我想控制动画的FPS
目前我可以这样做:
k.state.loopinterval =
window.setInterval(renderLoop(), 1000 / k.settings.engine.fps );
其中k.settings.engine.fps
为所需fps。
如果我用requestAnimationFrame
的方式,我失去了这种可能性,它只会给我它能给的:
window.requestAnimFrame(k.operations.startLoop);
renderLoop();
我看到一些人建议将requestAnimFrame放在另一个循环中:
setInterval( function () {
requestAnimationFrame( draw );
}, 1000 / 60 );
所以…我该配什么呢?让它保持原样?
requestAnimationFrame的确切好处是什么,现在setTimeout也暂停切换选项卡时?
requestAnimationFrame是制作动画的正确方法。
为什么?
因为浏览器可以优化渲染,使动画更流畅。回答这个问题,另一种方式是:
window.requestAnimFrame = (function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(callback, element){
window.setTimeout(callback, 1000 / 60);
};
})();
还有另一种方法
当你调用requestAnimation时,你让浏览器知道什么时候是重新绘制html的时刻。如果你在CSS中制作动画/过渡,移动东西或改变背景(如精灵),使用requestAnimation将在调用requestAnimation时使渲染工作。如果没有它,浏览器会在一定的时间内渲染任何东西,这会导致更多的重绘。
甚至,浏览器正在进行的方式,它将做更多的优化比我们还不知道。让浏览器明白我们在做什么,然后他们帮助我们。
我找到了这个链接,可以添加更多的想法
相关文章:
- 为什么继续;语句冻结浏览器
- Canvas+svg路径动画,在路径中的特定点暂停一段时间,然后继续
- 继续使用javascript中的setTimeout
- 当一些承诺失败时,如何继续使用$q.all()
- Tab键不会't继续chrome/IE11中的表单字段
- 如何让JS脚本在导航后继续运行(谷歌chrome控制台)
- 定时Ajax进程在用户离开页面后继续
- 在编译阶段后创建新的DOM树,或者继续使用原始修改的DOM
- 如何在刷新页面后继续选取框
- "改变“;列表头,然后继续处理列表
- 如何停止字幕文本一段时间,然后继续
- 在窗口中单击按钮完成之前,光标不会停止.请继续卸载
- 如何隐藏滚动条,但希望它继续工作
- 继续检查,直到为True
- 我如何才能继续'如果'语句来比较作为参数的多个函数返回值
- 属性比方法快?需要理由
- 等待函数执行后再继续
- 如何让foreach循环等待$http.get完成后再继续
- 按下后退按钮时,谷歌音乐如何继续播放
- 是想控制我的动画的FPS一个很好的理由继续使用setTimeout而不是requestAnimationFrame