標籤:
在寫遊戲的時候,動畫移動的速度需要保持一致,為了在各個軟硬體環境中速度的一致,需要考慮幀頻的不同。
計算時間係數:
時間係數 = 目標FPS / 實際FPS
計算實際FPS
actualFPS = 1000 / (endTime - startTime)
代碼邏輯執行前計算開始的時間,執行完代碼邏輯後的時間(結束時間)
建立一個timeInfo對象,接收一個參數goalFPS(想要達到的目標FPS),如果達不到,將調整移動速度使其看起來達到了goalFPS。
/** * elapsed //經過的時間 * coeff //時間係數 * FPS //實際FPS * averageFPS //平均FPS**/var timeInfo = function (goalFPS) { var oldTime, paused = true, iterCount = 0, totalFPS = 0; return { getInfo: function () { if(paused === true) { paused = false; oldTime = +new Date(); return {elapsed:0, coeff:0, FPS:0, averageFPS:0 }; } var newTime = +new Date(); var elapsed = newTime - oldTime; var FPS = 1000/elapsed; oldTime = newTime; iterCount ++; totalFPS += FPS; return { elapsed: elapsed, coeff: goalFPS / FPS, FPS: FPS, averageFPS: totalFPS / iterCount }; }, pause: function() {paused = true;} };};//use/*var timer = timeInfo(40);//... animate start setTimeout setIntervalvar timeData = timer.getInfo(), elapsed = timeData.elapsed, Coefficient = timeData.coeff, FPS = timeData.FPS, averageFPS = timeData.averageFPS;//... animate end*/
javascript動畫中的“幀”