p5.play计数器无法正常工作

时间:2017-11-10 20:14:35

标签: animation counter p5.js

我正在尝试编写一个程序,其中游戏的结束屏幕仅在最后一个动画结束后显示。我正在使用一个计数器,该计数器在每个对象被移除后实现(仅在它完成动画之后),并且当该计数器变为零时,它应该显示结束屏幕。不幸的是,据我所知,反声明根本没有注册。我插入了一个无效的打印语句。

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();
    }
  }

1 个答案:

答案 0 :(得分:0)

你需要后退一步debug your program。例如,您确定star.onMousePressed()函数正在触发吗?您确定if声明是否按预期方式工作?您确定正在调用player.dir()函数吗?

听起来你的if声明没有被输入。你能找到那条线上所有东西的价值吗?哪个东西的价值与您的预期不同?

使用console.log()语句或使用JavaScript调试器来回答上述所有问题。确切地确定哪一行代码的行为与您的预期不同,然后在MCVE中隔离该问题。祝你好运。