前提・実現したいこと
JavaScriptでrequestAnimationFrameでフレームと再描画更新を行うコードを書いてみました。
そこで、一秒ごとにconsole.logで変数fpsを出力したところ、変数の値が40あたりを行ったり来たりしている状態です。
(requestAnimationFrameが60回更新しているのに対し、if(ping >= 1){}内のコードは40回しか実行されない)。
if(ping >= 2)にすることで、関数内のコードの実行を30回に抑えようとすると、実際には20回しか実行されないことも確認しました。
(この時のrequestAnimationFrameの更新は60回です)
目標としては、if関数ないの変数「ping」の値を変えることで、自由にfpsを制御できるようにしたいのですがどのような改善が必要でしょうか?
発生している問題・エラーメッセージ
期待している通りの、更新制御が行えない。
該当のソースコード
Javascript
1 2//ゲーム開始時刻 3var start = Date.now(); 4 5//過去の時間(最初は初めの時間を使う) 6var pastTime = start; 7var pastSecond = start; 8var time; 9console.log(start); 10 11//fps 12var fps = 0; 13var ping = 0; 14 15render = function () { 16 //fps管理 17 time = Date.now(); 18 ping = (time - pastTime ) / (1000/60); 19 if (ping >= 1) { 20 fps += 1; 21 pastTime = time; 22 } 23 24 //一秒判定 25 if ((Math.floor(time / 1000) - Math.floor(pastSecond / 1000)) >= 1) { 26 console.log(fps); 27 pastSecond = time; 28 fps = 0; 29 30 } 31 requestAnimationFrame(render); 32 } 33 34render();
補足情報(FW/ツールのバージョンなど)
fpsの計測はfirefoxのコンソール画面での計測です。

回答1件
あなたの回答
tips
プレビュー