此問題與this older one,有關,但我想確保在我開始對代碼進行重大更改之前我有正確的答案。強制HTML5畫布在重做JavaScript處理時重繪?
我的工作,需要在HTML5畫布不斷更新的圖像繪製的動畫非常計算密集的JavaScript程序。正如現在所寫,代碼以緊密的循環方式繪製動畫的所有幀,而不會將控制權返回給瀏覽器,這意味着最終顯示的內容僅僅是最後一幀。我非常肯定,解決這個問題的唯一方法是將動畫代碼分割成可以通過超時事件重複調用的較小片段。它是否正確?或者是否有辦法強制畫布在某個點上顯示其內容,即使是在嚴格的JavaScript循環中?
」沒有將控制權返回給瀏覽器。「輕鬆修復,看看會發生什麼。 – Dykam 2011-05-16 08:51:21
對於Mozilla,您可以使用[JavaScript 1.7的yield yield operator](https://developer.mozilla.org/en/JavaScript/Guide/Iterators_and_Generators),並在函數的幫助下反覆調用'animationGenerator.next()' 'setTimeout' /'setInterval' /'mozRequestAnimationFrame'。 – Thai 2011-05-16 09:05:07
而不是setTimeout/setInterval你應該可能使用requestAnimationFrame。你可以在https://gist.github.com/838785找到這個墊片。這很好的一面是,它將控制權交給瀏覽器(如果不可見,則不需要刷新等)。 – 2011-05-16 13:01:15