この値を取得する必要があるたびに新しいオブジェクトをインスタンス化する必要なく、日付オブジェクトを使用してミリ秒単位で時間を取得する代替手段、または少なくともそのオブジェクトを再利用する方法はありますか?JavaScriptで単純なゲームエンジンを作成しようとしているため、これを求めています。「デルタフレーム時間」を計算するときは、フレームごとに新しいDateオブジェクトを作成する必要があります。これによるパフォーマンスへの影響についてはあまり心配していませんが、このオブジェクトによって返される正確な時刻の信頼性に問題があります。
毎秒ぐらいアニメーションで奇妙な「ジャンプ」が発生します。これがJavaScriptのガベージコレクションに関連しているか、更新が非常に速い場合のDateオブジェクトの制限に関連しているかはわかりません。デルタ値を一定に設定すると、アニメーションが完全にスムーズになるため、この「ジャンプ」が時間の取得方法に関連していると確信しています。
私が与えることができる唯一の関連コードは、デルタ時間を計算する方法です:
prevTime = curTime;
curTime = (new Date()).getTime();
deltaTime = curTime - prevTime;
動き/アニメーションを計算するとき、私は一定の値にデルタ時間を掛けます。
Dateオブジェクトを使用して時間をミリ秒単位で取得するのを回避する方法がない場合、変数をインクリメントする関数(ゲーム開始からの経過時間はミリ秒単位)となり、SetTimer関数を使用して次のレートで呼び出されますミリ秒に1回は効率的で信頼性の高い代替手段ですか?
編集:さまざまなブラウザでコードをテストしましたが、この「ジャンプ」は実際にはFirefoxではなくChromeでのみ確認できるようです。しかし、両方のブラウザで機能するメソッドがあればなお良いでしょう。
Date.getMilliseconds現在の秒のミリ秒(0〜999)のみを返すという事実と関係がありますか?あなたの例ではこの関数を使用していませんが、おそらく他の場所で使用されているのでしょうか、それとも別のブランチで使用されているのでしょうか?