Независимо от того, что я делаю, я не могу заставить этот бит кода работать, часть, в которой вы устанавливаете интервал в методе рисования, и вызовет метод Loop 4 раза за две секунды, каждый вызов отображает другое изображение. В настоящее время ничего не показывает? И проблема не в изображениях и т. Д., Поскольку он работает с одним изображением. Были в этом в течение 2 дней ..Не можете установить заданный интервал?
function Explosion() //space weapon uses this
{
this.srcX = 0;
this.srcY = 1250;
this.drawX = 0;
this.drawY = 0;
this.width = 70;
this.height = 70;
this.currentFrame = 0;
this.totalFrames = 10;
this.hasHit = false;
this.frame = 0;
}
Explosion.prototype.draw = function()
{
if(this.hasHit == true && this.frame < 5)
{
var t=setTimeout(Explosion.Loop,500);
}
if(this.frame == 5)
{
clearTimeout(t);
this.hasHit = false;
this.frame = 0;
}
}
Explosion.prototype.Loop = function()
{
ctxExplosion.clearRect (0 , 0, canvasWidth , canvasHeight);
if(this.frame == 1)
{
ctxExplosion.drawImage(spriteImage,this.srcX,this.srcY,this.width,this.height,this.drawX,this.drawY,this.width,this.height);
frame++;
}
else if(this.frame == 2)
{
ctxExplosion.drawImage(spriteImage,this.srcX,(this.srcY + 77),this.width,this.height,this.drawX,this.drawY,this.width,this.height);
frame++;
}
else if(this.frame == 3)
{
ctxExplosion.drawImage(spriteImage,this.srcX,(this.srcY + 154),this.width,this.height,this.drawX,this.drawY,this.width,this.height);
frame++;
}
else if(this.frame == 4)
{
ctxExplosion.drawImage(spriteImage,this.srcX,(this.srcY + 231),this.width,this.height,this.drawX,this.drawY,this.width,this.height);
frame++;
}
}
Это только одна из многих проблем с кодом. –
@ Колинк: Ты прав; это был первый, который выскочил на меня. Я отредактировал свой ответ, чтобы рассмотреть еще несколько проблем, которые у них были, хотя мне все еще могут быть проблемы. – icktoofay
если (это.frame <= 4) { комплектTimeout (это.Loop.bind (это), 500); } Все еще не работает? :/ –