3

コードの練習と改善の目的で、単純なゲームを作成しています (現在、ゲーム エンジンとして十分に汎用的なものを作成しています)。

現在、多数のsetInterval呼び出しが実行されています。つまり、各「エンティティ」(プレハブ/プレイヤー) が押し下げられたキーを調べたり、衝突をチェックしたり、位置参照を更新したりしています。個別の setIntervals の数。互いのタイミングは重要ではないので、同期がずれることは心配していません (いずれにせよ間隔がわずかに異なります) setInterval。効率的?そのオプションに関する私の唯一の懸念は、関数がインターバル時間よりも長くかかる可能性があることです。新しい間隔を作成すると、それぞれが非常に少量の場合、心配するのに十分なストレスが発生しますか?

4

1 に答える 1

3

まず第一にsetInterval、コールバック内のコードの実行に間隔よりも長い時間がかかる場合、コールバックがスタックして次々と発生する可能性があるため、使用しません。

複数のタイマーを持つことに関しては、同期を気にしなくても、それは良い考えではないと思います。それは全体的なことを維持するにはあまりにも複雑になり、ゲームの速度を調整したい場合は悪夢になります. 私は間違いなくシングルタイマーに行きます。

また、ご存知ない場合は、requestAnimationFrameアニメーションの実行に最適化された関数があるので、代わりにそれを使用できますsetTimeout。ブラウザが追いつくことができれば、基本的に60fpsで呼び出されます。

timestampに渡されたコールバック関数に引数として渡された を使用requestAnimationFrameして、最後のゲーム ループの反復から経過した時間を判断できます。

于 2013-09-21T16:06:31.560 に答える