HTML5-canvas动画闪烁分析

主要是setInterval驱动的不精准,该时钟无法跟浏览器重绘的频率同步而会导致时序问题。

关于FPS和浏览器重绘:浏览器保持一个帧频(通常为60fps)刷新画面,包括页面中的canvas;动画绘制过程如下:擦除canvas--计算所有元件的位置及颜色--逐个绘制所有元件到canvas中。该过程中,当擦除整个canvas后,浏览器到达重绘点时,canvas为空白,浏览器就会绘制空白的canvas,而50ms后,该帧动画的所有元件绘制完成,但当动画复杂就会消耗较长的时间。
解决方法---创建临时canvas,先把下一帧动画绘制到临时canvas上,真正绘制时,擦除正式canvas,立即通过drawImage将临时canvas的内容复制过去。

你可能感兴趣的:(前端开发)