알고리즘을 더 잘 이해하기 위해 작은 자바 스크립트 애니메이션을 만들려고합니다. 알고리즘은 다음과 같이 2 차원 배열에서 작동 : - 등등캔버스에서 애니메이션의 지연을 추가하는 방법은 무엇입니까?
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