現在、ループされた呼び出しで要素xピクセルの量を移動していくつかのものをテストします。私は再帰関数を作成し、オーバーフローからのコールバックを避けるためにいくつかの遅延を追加しました。私はこの遅延を作成するためにsetTimeoutを使用しました。 setTimeoutを使用するときに、なぜ再帰関数を別の関数の中にラップする必要があるのだろうかと思います。私がそうしなければ、遅延は追加されず、ブラウザはコールバックが私のコンソールでエラーを超えています。以下は私が使用しているコードです。 「物(ボール)」をdiv/box/screenを横切って左から右に何度も移動させることを意図しています。setTimeoutで再帰的に呼び出すためにラッパー関数が必要なのはなぜですか?
(私はrequestAnimationFrameが一般的にこの種のものに使用されていることを理解していますが、私はさまざまな方法でjavascriptに慣れようとしています)。
function moveThing(pos){
var currentPos = pos;
currentPos += 5;
theThing.style.left = currentPos + "px";
if(Math.abs(currentPos) >= 900) {
currentPos = -500;
}
console.log(currentPos);
setTimeout(function(){moveThing(currentPos)}, 100);
}
moveThing(0);
また、私が正しい用語を使用していない場合は、自由に修正してください。あなたの助けを前もってありがとう!
あなたは他に何をしますか? – SLaks
'setTimeout'は、呼び出し可能な関数を最初の引数として期待しているため、関数ではありません。* – Li357
@ Li357 Ohhh、大丈夫です。十分に簡単!ありがとう –