考慮する:
function doKeyDown(event) {
switch (event.keyCode) {
case 32:
/* Space bar was pressed */
if (x == 4) {
setInterval(drawAll, 20);
}
else {
setInterval(drawAll, 20);
x += dx;
}
break;
}
}
電話したいdrawAll()
一度、作成しないループ何度も繰り返して呼び出されますdrawAll
。そのためには再帰メソッドを使うべきでしょうか、それともclearInterval
?
どうやって使えばいいですかclearInterval
?
ベストアンサー1
setInterval
を設定する繰り返しclearInterval
タイマー。タイマーの起動を停止するために渡すことができるハンドルを返します。
var handle = setInterval(drawAll, 20);
// When you want to cancel it:
clearInterval(handle);
handle = 0; // I just do this so I know I've cleared the interval
ブラウザでは、ハンドルは と等しくない数値であることが保証されている0
ため、 は0
「タイマーが設定されていない」ことを示す便利なフラグ値になります。(他のプラットフォームでは他の値が返される場合があります。たとえば、Node.js のタイマー関数はオブジェクトを返します。)
関数をスケジュールするにはのみ一度だけ発砲する場合は、setTimeout
代わりに を使用してください。発砲し続けることはありません。(適切な場合は、その 1 回発砲する前にキャンセルするために使用できるハンドルも返されますclearTimeout
。)
setTimeout(drawAll, 20);