如何使用延迟的 for 循环绘制画布
how to draw Canvas using for loop with delay?
var context = document.getElementById("canvas").getContext("2d");
for(var i = 0; i< savedMove.length; i++){
doSetTimeout(i);
}
function doSetTimeout(i) {
setInterval(function() { animate(savedMove[i][0], savedMove[i][1]); }, 100);
}
function animate(xPos, yPos) {
context.fillStyle = "red";
context.fillRect(xPos, yPos, 5, 5);
}
我让每个 x 和 y 位置在 2D 数组 (savedMove) 内移动,我想延迟使用数组信息进行绘制。但 Canvas 没有画这个。我一直在调试,但我无法找出问题所在。
您将 savedMove.length 计时器设置为每 100 毫秒并行滴答一次。我很确定这不是你想要的,尽管很难猜测它是什么。首先,我将 setInterval 更改为 setTimeout,并使它们在不同的时间触发,彼此相距 100 毫秒:
function doSetTimeout(i) {
setTimeout(function() { animate(savedMove[i][0], savedMove[i][1]); }, 100 * i);
}
请注意,这不是最好的方法,但肯定比原始代码更好。
然后你可以调试它,因为你可能会从可见的画布中绘制出来:
console.log("canvas size:", document.getElementById("canvas").width, document.getElementById("canvas").height);
function animate(xPos, yPos) {
context.fillStyle = "red";
context.fillRect(xPos, yPos, 5, 5);
console.log("animate:", xPos, yPos);
}
相关文章:
- Javascript:延迟在html5画布上循环绘制
- 使用javascript中的for循环在画布上绘制路径
- 从带有循环的数组中一个接一个地在画布上绘制形状
- 使用 for 循环在画布中绘制 img
- 使用香草 JS 和循环绘制表格
- 使用 for 循环绘制 HTML5 画布圆圈
- Javascript,如何加载,绘制和循环120帧
- 如何使用 svg 循环绘制贝塞尔曲线
- 使用 for 循环动态创建在画布内绘制的图像
- 在绘制图表之前在每个循环中编排嵌套的 AJAX 调用 (JQuery)
- 如何使用延迟的 for 循环绘制画布
- 画布用循环绘制线条
- HTML 5 画布:在游戏中使用绘制图像会使循环非常慢
- 使用for循环在谷歌地图上绘制饼图效果不佳
- 如何在JavaScript/JQuery中绘制循环图
- 使用js-op和svg绘制循环
- MySql和PHP循环使用x,y坐标绘制正方形
- 我如何得到定义在画布绘制循环之外的函数在循环内可用
- 在主动画循环中执行另一个绘制循环,持续5秒
- 我怎么能使一个值在JS加载从HTML表单保持定义为JS进入绘制循环