Ich erstelle ein Invader-ähnliches Spiel mit Phaser HTML5 Game Engine.Kann die Eigenschaft 'getFirstExists' von undefined nicht lesen
Run in diese Cannot read property 'getFirstExists' of undefined
Fehler, wenn ich versuche, den Kollisionstest für das ‚Schiff‘ und die ‚Feinde‘ hinzufügen ...
ich bereits zwei Tage auf sie ausgegeben habe und noch keine Anhaltspunkte. :(
Bitte helfen. Danke.
var play = function(game) {}
play.prototype = {
create: function(){
....
// Add an explosion group
this.explosions = this.game.add.group();
this.explosions.enableBody = true;
this.explosions.physicsBodyType = Phaser.Physics.ARCADE;
this.explosions.createMultiple(15, 'explosion');
this.explosions.setAll('anchor.x', 0.5);
this.explosions.setAll('anchor.y', 0.5);
this.explosions.forEach(function(explosion) {
explosion.animations.add('explosion', [0, 1, 2], 10 , false);
});
},
update: function(){
....
this.game.physics.arcade.overlap(this.ship, this.enemyGroupSizeL, this.shipCollision, null, this);
},
shipCollision: function(s, e) {
this.explosion = this.explosions.getFirstExists(false); // ERROR
this.explosion.reset(e.body.x + e.body.halfWidth, e.body.y + e.body.halfHeight);
this.explosion.body.velocity.y = e.body.velocity.y;
this.explosion.alpha = 0.7;
this.explosion.play('explosion', 30, false, true);
e.kill();
}
}
Ich glaube nicht, dass Sie mehr von Ihrem Code oder Link zu Ihrem Spiel teilen können? Vergleicht man dies mit einem Arbeitsbeispiel aus einem Tutorial, das sehr ähnlich ist, sehe ich nichts falsch mit dem, was Sie gepostet haben. –
Ich sehe auch nichts falsch mit diesem Code, aber Sie könnten versuchen, einen 'Debugger;' als erste Zeile der 'shipCollision()' Funktion zu setzen. Öffnen Sie dann die Entwicklerwerkzeuge Strg + Umschalt + J, um zu sehen, was der Wert von 'this 'an diesem Punkt ist. – BdR