我正在尝试编写一个程序,其中游戏的结束屏幕仅在最后一个动画结束后显示。我正在使用一个计数器,该计数器在每个对象被移除后实现(仅在它完成动画之后),并且当该计数器变为零时,它应该显示结束屏幕。不幸的是,据我所知,反声明根本没有注册。我插入了一个无效的打印语句。
var star;
var score;
var counter;
function setup() {
createCanvas(600,400);
score = 0;
counter = 20;
for (var s = 0; s < 20; s++) {
star = createSprite(random(width), random(height));
star.addAnimation("idle", idleAnim);
star.addAnimation("explode", explAnim);
star.changeAnimation("idle");
star.onMousePressed = function() {
this.changeAnimation("explode");
this.animation.looping = false;
score +=1
if (this.getAnimationLabel() == "explode" && this.animation.getFrame() == this.animation.getLastFrame()) {
this.remove();
counter -= 1;
print(counter);
}
}
}
}
function draw() {
if (score == 20 && counter == 0) {
background(255,222,51)
textSize(90);
fill(0)
text("YOU WIN!",95,225)
} else {
drawSprites();
}
}
答案 0 :(得分:0)
你需要后退一步debug your program。例如,您确定star.onMousePressed()
函数正在触发吗?您确定if
声明是否按预期方式工作?您确定正在调用player.dir()
函数吗?
听起来你的if
声明没有被输入。你能找到那条线上所有东西的价值吗?哪个东西的价值与您的预期不同?
使用console.log()
语句或使用JavaScript调试器来回答上述所有问题。确切地确定哪一行代码的行为与您的预期不同,然后在MCVE中隔离该问题。祝你好运。