Ich mache ein plattform spiel in flash cs4 as3 und habe viel probleme bekommen meine verschiedenen klassen, um richtig zusammen zu arbeiten. Ich habe eine Kugelklasse, eine feindliche Klasse und eine Stoßstangenklasse, die die Grenzen für den Feind bestimmt. Wenn die Kugel den Feind trifft, wird die Tod Animation des Feindes gespielt und beide werden aus dem Spiel entfernt. Wenn der letzte Feind auf dieser Ebene jedoch entfernt wird, erhalte ich den Fehler, dass ein Begriff nicht definiert ist und keine Eigenschaften hat. Auch wenn ich die Feinde aus der Reihenfolge töte, in der sie Dinge genannt werden, die nicht richtig funktionieren, müssen meine Codes einige Fehler haben. Hier ist mein Code zwischen der Kugel und feindlichen Klassen:flash as3 plattform spiel (ich bin noob)
if (enemyList.length>0) {
for (var i:int = 0; i < enemyList.length; i++) {
if (bulletList.length>0) {
for (var j:int = 0; j < bulletList.length; j++) {
if (enemyList[i].hitTestObject(bulletList[j])) {
trace("Bullet and Enemy are colliding");
enemyList[i].gotoAndPlay("dead");
bulletList[j].removeSelf();
enemyList[i].xSpeedConst=0;
enemyList[i].isDead = true;
} else {
enemyList[i].isDead = false;
}
}
}
}
}
}
und auch zwischen dem Spieler und Feind und Stoßfänger und Feind.
if (enemyList[k].isDead == false && enemyList.length>0) {
for (var k:int = 0; k < enemyList.length; k++) {
if (enemyList[k].isDead == false && bumperList.length>0) {
for (var h:int = 0; h < bumperList.length; h++) {
if (enemyList[k].hitTestObject(bumperList[h])) {
enemyList[k].changeDirection();
}
}
}
}
}
if (enemyList[m].isDead == false && enemyList.length>0) {
for (var m:int = 0; m < enemyList.length; m++) {
if (enemyList[m].hitTestObject(player)) {
trace("player collided with enemy");
currentHP-=5;
if (currentHP<=0) {
currentHP=0;
trace("you died");
gotoAndStop(1);
}
updateHealthBar();
}
}
}
Traurig ist es ein bisschen lange ich fühle mich wie Im fehlt etwas offensichtlich hier oder vielleicht alle meine Code nur schlecht strukturiert ist. In jedem Fall würde jede Hilfe sehr geschätzt werden, danke!
Die Außenseite der for-Schleife 'if (enemyList [ k] .isDead == false && enemyList.length> 0) {'sollte' sein if (enemyList.length> 0) {'. –
Und ich denke 'sonst {enemyList [i] .isDead = false;}' ist überflüssig. Es überschreibt manchmal 'isDead = true' zu' false', verursacht nicht den Tod des Gegners (zB wenn bulletList [4] den Gegner trifft, ist der Gegner tot. Wenn bulletList [5] den Gegner nicht trifft, Gegner wiederbeleben.) –
@ Yasuyuki: es macht nicht viel Sinn, diese for-Schleife in diese if-Anweisung zu packen, weil der Körper der for-Schleife einmal für jedes Array-Element läuft. Wenn keine Elemente vorhanden sind, wird es nicht ausgeführt. Die if-Anweisung, die die Länge des Arrays überprüft, ist redundant. Es sollte vollständig entfernt werden. – null