이 코드를 사용하고 있지만 브라우저 (New Chrome)에서 테스트 할 때 move_1_3 함수가 먼저 발생하고 move_1_2가 올바른 방법을 알려주십시오. 는자바 스크립트의 순서 변경
window.onload = main;
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
function main(){
backGround.src = "http://www.ednetti.hu/images/cj0n9l0o6m.jpg";
backGround.onload = function(){
context.drawImage(backGround, 0, 0, w, h);
ballImg.src = "http://www.clipartsfree.net/vector/large/SABROG_Glass_Blue_Ball_Vector_Clipart.png";
ballImg.onload = function(){
cupImg.src = "http://www.clker.com/cliparts/8/m/s/0/t/K/blue-cup-hi.png";
cupImg.onload = function(){
timer = setInterval(move_1_2, timeStep);
timer = setInterval(move_1_3, timeStep);
//time3 = setInterval(move_2_3, timeStep);
};
};
};
}
function move_1_2() {
if (steps >2){
return;
}
posX =((posX2-posX1)/density)*i;
bposX =(bposX2-bposX1)/density*i;
context.clearRect(0, 0, w, h);
context.drawImage(backGround, 0, 0, w, h);
if(ballPos == 1){
context.drawImage(ballImg, bposX1 + bposX, bposY, ballw, ballh);
}
else if(ballPos == 2){
context.drawImage(ballImg, bposX2 - bposX, bposY, ballw, ballh);
}
else if(ballPos == 3){
context.drawImage(ballImg, bposX3, bposY, ballw, ballh);
}
context.drawImage(cupImg, posX1 + posX, posY, cupw, cuph);
context.drawImage(cupImg, posX3, posY, cupw, cuph);
context.drawImage(cupImg, posX2 - posX, posY, cupw, cuph);
i++;
if (i == density){
i = 0;
steps ++;
switch (ballPos){
case 1:
ballPos = 2;
break;
case 2:
ballPos = 1;
break;
}
clearInterval(timer);
}
}
function move_1_3() {
if (steps >2){
return;
}
posX =((posX3-posX1)/density)*i;
bposX =(bposX3-bposX1)/density*i;
context.clearRect(0, 0, w, h);
context.drawImage(backGround, 0, 0, w, h);
if(ballPos == 1){
context.drawImage(ballImg, bposX1 + bposX, bposY, ballw, ballh);
}
else if(ballPos == 3){
context.drawImage(ballImg, bposX3 - bposX, bposY, ballw, ballh);
}
else if(ballPos == 2){
context.drawImage(ballImg, bposX2, bposY, ballw, ballh);
}
context.drawImage(cupImg, posX1 + posX, posY, cupw, cuph);
context.drawImage(cupImg, posX2, posY, cupw, cuph);
context.drawImage(cupImg, posX3 - posX, posY, cupw, cuph);
i++;
if (i == density){
steps ++;
switch(ballPos){
case 1:
ballPos = 3;
break;
case 3:
ballPos = 1;
break;
case 2:
ballPos = 2;
break;
}
clearInterval(timer);
i = 0;
}
}
고마워요.하지만 먼저 move_1_2를 1000 회 실행 한 다음 move_1_3을 1000 번 실행하는 솔루션이 필요합니다. (move_1_2를 호출 할 때마다 move_1_3을 실행하지 마십시오.) – user3115593
참조하십시오. 원래 질문. 'setInterval'을 사용하지 않고 루프를 사용하여 처음 1000 번만 실행하면 어떨까요? – Blazemonger
그것은 일종의 애니메이션입니다. 1000 회에 걸쳐 그림이 윈도우의 다른 부분에 나타납니다. 루프 만 사용하면 모니터에 최종 화면 만 보입니다. – user3115593