Мой холст действует как карта. Пользователь получает щелчок по холсту, и он отображает маркер на карте (холст). Координаты хранятся в массиве.Сроки в HTML5 Холст
Когда пользователь нажимает кнопку воспроизведения, холст отображает первый маркер массива в своем положении, а второй - второй маркер, второй - позже, третий график и т. Д.
Как я мог достичь этого? Я пробовал использовать цикл for и вызывать функцию setTimeout, которая передает значение i в цикле, но циклы идут быстро, и я не могу опустить его в голову.
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