我有一個函數可以計算在X軸和Y軸上移動的各種對象(我稱之爲frameRender()
)和將結果幀應用到對象[我稱之爲frameDisplay()
]的動畫中的下一幀。物體不僅從A點移動到B點,它們不斷移動,始終接收新的目標座標。我使用setInterval()
,間隔時間爲1000/frameRate
,但由於瀏覽器沒有準確的計時,所以這似乎不起作用。如何在所有系統上的所有瀏覽器上以相同的速度播放JavaScript動畫?
問題是:如何確保動畫具有恆定的幀速率,並且在所有瀏覽器上以相同的速度在所有系統上運行?我已經嘗試了一切,並且即使在不同的瀏覽器上也看不到準確的結果(我在Firefox和Chrome上測試,Chrome通常顯示速度更快)。
結果應該是:當播放速度慢時,動畫間隔應該首先減少,然後嘗試跳過一些幀[跳過frameDisplay()
],如果DOM顯示慢,直到播放正確。播放速度快時,應增加動畫間隔,使動畫以正確的速度播放。
但是,如何保持所有這一切的一致性,因爲您無法始終確定何時瀏覽器變慢,或者執行速度快。例如,如果運動的峯值很大,並且爲了保持幀速率穩定而減少間隔,然後突然大部分運動物體停止或移動不多,它會突然表現得非常快!
任何想法?
所以基本上你的意思是我應該改變幀渲染數學包括一個delta變量,所以我可以移動例如基於前一次通過的對象或多或少的X Y像素? – stagas 2010-06-28 22:52:31
@stagas - 正好。這樣,如果一次更新在50ms內,另一次在450ms內,如果你明白我的意思,你的應用程序仍然應該處於「500ms大關」。 – Matt 2010-06-28 22:54:51
很酷,會馬上試試,謝謝 – stagas 2010-06-28 23:00:19