0

5 つのスプライトを取得しました (5 つのブロック、それぞれが前よりも小さくなっています)。そして彼らは描くのが速すぎる。new Date()、getMilliseconds、またはタイマーに遅延を伴う他のメソッドを正しく使用するにはどうすればよいですか?

例のために。

for ( i = 0; i < 5; i ++ ) {
    xxx.drawImage(sprite, i, etc);
}
4

1 に答える 1

0

setInterval()またはを使用setTimeout()してタイマーを設定します。ただし、javascript のシングル スレッドの性質により、これら 2 つの関数の微妙な違いに気付くはずです。例を見てみましょう:

setTimeout(function test() {
   //your code
   setTimeout(test, 100);
}, 100);

setInterval(function() {
     //your code
}, 100);

これら 2 つのコード ブロックは同じように見えますが、JavaScript のシングル スレッドの性質のため、そうではありません。

  • With setInterval(): コードの実行がビジーで、完了するまでに長い時間がかかる場合。コードがまだ実行されている間に次の間隔が発生する可能性があり、これらの間隔はキューに入れられます。最終的に、いくつかのハンドラーが遅延なく連続して実行される可能性があります。

  • With : 次の間隔は、現在のコードが終了したときにsetTimeout()のみ発生するように設定されています。これにより、次の実行が間隔 (この場合は 100) 未満になることはなく、等しいかそれ以上になることが保証されます。

于 2013-08-01T14:38:39.337 に答える