`

讨论一个关于js,canvas,setTimeout的问题.

阅读更多
想和大家讨论一个关于js,canvas,setTimeout的问题.

看一段伪代码:

function mainLoop(){
  
   updateLogic();  //该方法进行逻辑运算,处理要绘制的"图形"的坐标大小等.
   drawCanvas(); //该方法在一个canvas上绘制出"图形".
   
   setTimeout( mainLoop, 30); //30毫秒后 重复以上动作.
}

setTimeout( mainLoop, 30);



这段代码很好理解 ,每30毫秒更新一下图形的状态 并绘制.
它也是很多游戏或者是动画程序的主干.

网上看到有人提出一种优化方案.
方案中建议 将此代码中的
updateLogic  和 drawCanvas 分别放到两个 setTimeout里去执行 ,
说这样能够优化程序的性能, 使其能够得到更高的FPS(每秒钟显示的帧数).

我觉得这种优化的效果 微乎其微 甚至到底会不会起到真正的优化 我个人也持怀疑态度.

各位爱好js的同学们 大家一起讨论一下

你们是怎么看的?

补充: 大家在讨论时 要注意一下 canvas对象的特殊性(可以简单参考一下这里. 如果把drawCanvas换成普通的运算函数 这个问题就没啥可讨论的了.
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics