我的画布充当地图。用户可以点击画布,并在地图上画一个标记(画布)。坐标存储在一个数组中。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