我的畫布充當地圖。用戶可以點擊畫布,並在地圖上畫一個標記(畫布)。座標存儲在一個數組中。HTML5畫布時間
當用戶點擊播放按鈕時,畫布會將第一個數組標記繪製到其位置,第二個稍後繪製第二個標記,另一個稍後繪製第三個標記等等。
我怎麼能做到這一點?我試過使用for循環並調用一個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);
}
除了99作爲maxCount以外,這很好。只需拉入數組長度。 :) – zfrisch
setInterval不是一個好辦法,因爲即使先前的滴答沒有完成,它也會打勾。 setTimeout會更好,或者最好是requestAnimationFrame,但用邏輯來處理幀是否應該被處理。如果你使用requestAnimationFrame,那麼如果你移動到不同的標籤,那麼滴答就會停止,有效地讓你的動畫暫停,爲你準備好當你返回到標籤。瀏覽器的時鐘週期也更加高效。 – ManoDestra