2017-11-10 3 views
0

Ich versuche ein Programm zu schreiben, in dem der Endbildschirm des Spiels erst erscheint, wenn die letzte Animation beendet ist. Ich benutze einen Zähler, der implementiert wird, nachdem jedes Objekt entfernt wurde (das ist erst, nachdem es seine Animation beendet hat) und wenn dieser Zähler auf Null kommt, sollte den Endbildschirm anzeigen. Leider, von dem was ich sagen kann, registriert sich die Gegenanweisung überhaupt nicht. Ich habe eine Druckanweisung eingefügt, die nicht funktioniert.p5.play counter funktioniert nicht

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

Antwort

0

Sie müssen zurück und debug your program einen Schritt zu tun. Sind Sie beispielsweise sicher, dass die star.onMousePressed()-Funktion ausgelöst wird? Sind Sie sicher, dass die if-Anweisung so funktioniert, wie Sie es erwartet haben? Sind Sie sicher, dass die player.dir() Funktion aufgerufen wird?

Es klingt wie Ihre if Anweisung wird nicht eingegeben. Kannst du den Wert von allem auf dieser Linie herausfinden? Welches Ding hat einen anderen Wert als du erwartet hast?

Verwenden Sie console.log() Anweisungen, oder verwenden Sie den JavaScript-Debugger, um alle oben genannten zu beantworten. Stellen Sie fest, welche Codezeile sich anders verhält als erwartet, und isolieren Sie dann das Problem in einer MCVE. Viel Glück.

Verwandte Themen