var ExplodeFrame = 0;
var ExplodeTimeout;
所有這一部分都會檢查玩家是否遇到熔岩。有用。請參閱評論部分致電動畫似乎無法使setTimeout正常工作?
if((Player.x > Lavas[i].x && Player.x < (Lavas[i].x + Lavas[i].width)) || (Player.x + Player.width > Lavas[i].x && Player.x + Player.width < (Lavas[i].x + Lavas[i].width)))
{
if((Player.y > Lavas[i].y && Player.y < Lavas[i].y + Lavas[i].height) || (Player.y + Player.height > Lavas[i].y && Player.y + Player.height < Lavas[i].y + Lavas[i].height))
{
ExplodeTimeout = setTimeout(DrawSpawnAnimation, 200); //this part is new and might not work
Player.jumping = false;
Player.velY = 0;
Player.velX = 0;
Player.x = Player.spawnX;
Player.y = Player.spawnY;
Player.playerColour = Player.colour;
}
}
}
這種方法似乎不適用於我?
function DrawSpawnAnimation()
{
ExplodeFrame++;
alert("current frame" + ExplodeFrame);
var explodeX = Player.x - 50;
var explodeY = Player.y - 50;
if(ExplodeFrame == 1)
{
ctxAnimation.drawImage(spriteSheet,0,2740,100,100,explodeX,explodeY,100,100);
}
else if(ExplodeFrame == 2)
{
ctxAnimation.drawImage(spriteSheet,100,2740,100,100,explodeX,explodeY,100,100);
}
else if(ExplodeFrame == 3)
{
ctxAnimation.drawImage(spriteSheet,200,2740,100,100,explodeX,explodeY,100,100);
}
else if(ExplodeFrame == 4)
{
ctxAnimation.drawImage(spriteSheet,300,2740,100,100,explodeX,explodeY,100,100);
}
else if(ExplodeFrame == 5)
{
ctxAnimation.drawImage(spriteSheet,400,2740,100,100,explodeX,explodeY,100,100);
}
else
{
ExplodeFrame = 0;
clearTimeout(ExplodeTimeout);
ctxAnimation.clearRect(0,0,canvasWidth,canvasHeight);
}
}
它應該顯示在5幀的第二動畫直到其結束。這就是我想要做的。
DrawSpawnAnimation中的警報是否觸發? – Anthony
我不能推薦更多,學習使用適當的調試器。它允許您在執行代碼時逐行瀏覽代碼,並確切瞭解發生了什麼。關於調試的Google Chrome開發人員工具:https://developers.google.com/chrome-developer-tools/docs/javascript-debugging –
我建議您還要學習如何「接受」人們的答案(點擊勾號大綱)你已經提出了6個問題,並且都沒有接受。 – Jarrod