キャンバスがマップとして動作しています。ユーザーはキャンバスをクリックし、地図(キャンバス)上にマーカーをプロットします。座標は配列に格納されます。HTML5キャンバスのタイミング
ユーザーが再生ボタンをクリックすると、キャンバスは最初の配列マーカーをその位置にプロットし、2番目の後に2番目のマーカーをプロットし、2番目の後に3番目のマーカーをプロットします。
これをどのように達成できますか?私はforループを使用し、ループのiの値を渡すsetTimeout関数を呼び出そうとしましたが、ループは速く進み、私の周りに私の頭を得ることはできません。
function timer() {
for (i=0; i<array.length; i++){
play(i);
}
}
function play(i) {
setTimeout(function() {
ctx.clearRect(0,0, c.width, c.height);
ctx.beginPath();
ctx.moveTo(array[i].x, array[i].y);
ctx.lineTo(array[i].x,array[i].y);
cursor(array[i].x,array[i].y);
}, 1000);
}
maxCountとして99を除いてこれは良いです。配列の長さを引っ張るだけです。 :) – zfrisch
setIntervalはそれを行う良い方法ではありません。以前のティックが完了していなくてもチェックされます。 setTimeoutはより良い、あるいはrequestAnimationFrameであることが望ましいでしょうが、フレームを処理するかどうかを処理するロジックがあります。また、requestAnimationFrameを使用すると、別のタブに移動しても、アニメーションを効果的に一時停止して、タブに戻ったときに準備が整います。ブラウザのクロック・サイクルに比べてはるかに効率的です。 – ManoDestra