当我运行它时,浏览器会加载一段时间,然后显示整个画布。我怎样才能让它在完成一个循环迭代后立即显示?为什么这段代码没有按照我的预期做?
这是我的代码:
for(var i=0;i<50;i++){
for(var j=0;j<50;j++){
ctx.beginPath();
ctx.fillRect(10*j, 10*i, 10, 10);
ctx.fillStyle = 'rgb('+parseInt(Math.random()*255)+','+parseInt(Math.random()*255)+','+parseInt(Math.random()*255)+')';
ctx.fill();
ctx.closePath();
sleep(10);
}
}
function sleep(milliseconds) {
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds){
break;
}
}
}
好的......我设法使用
window.requestAnimationFrame(draw);
但是有人可以解释为什么上面的代码会这样吗?为什么它会在显示画布之前绘制所有 2500 个形状?