我想創建一個小的JavaScript動畫來更好地理解算法。 該算法的二維數組是這樣的: -如何在畫布中添加動畫延遲?
function algorithm(){
for(var i=0;i<gridSize;i++){
for(var j=0;j<gridSize;j++){
if(arr[i][j]=="D"){
// fill every nearby emty place with 1
if(i-1>=0 && j-1>=0 && arr[i-1][j-1]=="-"){
arr[i-1][j-1]=1;
// change the canvas here.
queue.enqueue(new Point(i-1,j-1));
}
}
}
}
}
等。 我的函數來填充基於陣列的畫布是:
function execute(){
for(var i=0;i<gridSize;i++){
for(var j=0;j<gridSize;j++){
drawRect(i,j);
}
}
}
function randomFill(){
ctx.clearRect(0,0,ctx.canvas.width,ctx.canvas.height)
execute();
for(var i=0;i<gridSize;i++){
for(var j=0;j<gridSize;j++){
if(arr[i][j]=="W")
ctx.fillStyle = "red";
else if(arr[i][j]=="D")
ctx.fillStyle = "blue";
else if(arr[i][j] == "-")
ctx.fillStyle = "green";
else
ctx.fillStyle = "purple";
ctx.font='30px Calibri';
ctx.fillText(arr[i][j],i*40 + 40,(j+1)*40 + 40);
}
}
}
}
所以,我怎麼能調用randomFill()函數來重畫在畫布上說,一個100毫秒後。 我想在畫布上顯示數組中的變化,但經過一點延遲後,讓人們可以看到。
爲什麼不直接使用setTimeout? – swornabsent