Javascript Can';我好像没法去上班?

Javascript Can';我好像没法去上班?,javascript,html,canvas,Javascript,Html,Canvas,所有这部分都会检查玩家何时击中熔岩。它起作用了。有关对动画的调用,请参见注释部分 var ExplodeFrame = 0; var ExplodeTimeout; } 它应该以每秒5帧的速度显示动画,直到结束。这就是我要做的。代码>设置超时只运行一次代码。看起来您正在寻找每200毫秒运行一次的东西。为此,请使用setInterval。它的工作方式与您尝试使用setTimeout的方式相同。使用setInterval时,可以通过调用clearIntervalsetTimeout运行代码一次来清

所有这部分都会检查玩家何时击中熔岩。它起作用了。有关对动画的调用,请参见注释部分

var ExplodeFrame = 0;
var ExplodeTimeout;
}


它应该以每秒5帧的速度显示动画,直到结束。这就是我要做的。

代码>设置超时只运行一次代码。看起来您正在寻找每200毫秒运行一次的东西。为此,请使用
setInterval
。它的工作方式与您尝试使用
setTimeout
的方式相同。使用
setInterval
时,可以通过调用
clearInterval

setTimeout
运行代码一次来清除它。看起来您正在寻找每200毫秒运行一次的东西。为此,请使用
setInterval
。它的工作方式与您尝试使用
setTimeout
的方式相同。使用
setInterval
时,可通过调用
clearInterval

setTimeout
仅触发一次函数来清除它:

听起来你要找的是
setInterval


setTimeout
只触发一次函数:

听起来你要找的是
setInterval


首先,将if语句替换为

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);
}
其次,只调用一次
DrawSpawnAnimation
方法。为了实际看到动画,应该反复调用它。通过在
DrawSpawnAnimation
末尾添加另一个超时设置来完成此操作:

ctxAnimation.drawImage(spriteSheet,(ExplodeFrame - 1) * 100,2740,100,100,explodeX,explodeY,100,100);
函数DrawSpawnAnimation()
{
...
如果(帧<5)
{
setTimeout(DrawSpawnAnimation,20);
}
}

首先,将if语句替换为

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);
}
其次,只调用一次
DrawSpawnAnimation
方法。为了实际看到动画,应该反复调用它。通过在
DrawSpawnAnimation
末尾添加另一个超时设置来完成此操作:

ctxAnimation.drawImage(spriteSheet,(ExplodeFrame - 1) * 100,2740,100,100,explodeX,explodeY,100,100);
函数DrawSpawnAnimation()
{
...
如果(帧<5)
{
setTimeout(DrawSpawnAnimation,20);
}
}

DrawSpawnAnimation中的警报是否会触发?我无法推荐更多,请学习使用正确的调试器。它允许您在代码执行时逐行地检查代码,并准确地查看正在发生的事情。Google Chrome开发者调试工具:我建议你也学习如何“接受”人们的答案(点击勾选框),因为你已经问了6个问题,但没有接受任何问题。重新排列你的代码,并将此函数
function DrawSpawnAnimation()
放在调用该函数的代码之前
setTimeout(),这可能是一个未定义的错误。您的警报在DrawSpawnAnimation fire中出现了吗?我不能推荐更多,请学习使用正确的调试器。它允许您在代码执行时逐行地检查代码,并准确地查看正在发生的事情。Google Chrome开发者调试工具:我建议你也学习如何“接受”人们的答案(点击勾选框),因为你已经问了6个问题,但没有接受任何问题。重新排列你的代码,并将此函数
function DrawSpawnAnimation()
放在调用该函数的代码之前
setTimeout(),这可能是一个未定义的错误。请不要发布w3schools的内容,想知道原因吗?读这篇文章:我已经将它设置为间隔,仍然没有@直观像素哈!!对于这些简单的东西来说,学校并不是那么糟糕。但愚蠢的人确实提出了一个很好的观点。不会再这样做了。请不要发布W3学校的东西,想知道为什么吗?读这篇文章:我已经将它设置为间隔,仍然没有@直观像素哈!!对于这些简单的东西来说,学校并不是那么糟糕。但愚蠢的人确实提出了一个很好的观点。我不会再这样做了。