javascript動畫中的“幀”

來源:互聯網
上載者:User

標籤:

  在寫遊戲的時候,動畫移動的速度需要保持一致,為了在各個軟硬體環境中速度的一致,需要考慮幀頻的不同。

  計算時間係數:

  

  時間係數 = 目標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動畫中的“幀”

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.