HTML5-canvas動畫閃爍分析

今夕又何夕發表於2018-01-08

主要是setInterval驅動的不精準,該時鐘無法跟瀏覽器重繪的頻率同步而會導致時序問題。

關於FPS和瀏覽器重繪:瀏覽器保持一個幀頻(通常為60fps)重新整理畫面,包括頁面中的canvas;動畫繪製過程如下:擦除canvas--計算所有元件的位置及顏色--逐個繪製所有元件到canvas中。該過程中,當擦除整個canvas後,瀏覽器到達重繪點時,canvas為空白,瀏覽器就會繪製空白的canvas,而50ms後,該幀動畫的所有元件繪製完成,但當動畫複雜就會消耗較長的時間。
解決方法---建立臨時canvas,先把下一幀動畫繪製到臨時canvas上,真正繪製時,擦除正式canvas,立即通過drawImage將臨時canvas的內容複製過去。

相關文章