Flash AS3 - removeChild() verwendet, um vollständig zu löschen Objekt?

Ich bin momentan dabei, ein asteroids-Spiel und in meiner main-Klasse, ich habe einige Schwierigkeiten Umgang mit den Kugeln, das Schiff feuert.

Alle Kugeln werden von der "Kugel" - Klasse und sind gespeichert in einem array namens "bullets" in der main-Klasse. Wenn Kugeln den Bildschirm zu verlassen, removeBullet(bulletID) in der main-Klasse aufgerufen wird.

private function removeBullet(id:int)
    {
        removeChild(bullets[id]);
        bullets.splice(id);
    }

In meiner Kugel Klasse, ich habe eine enterFrame-listener, der Spuren "stillHere". Also, sobald eine Kugel Hinzugefügt wird, um die Haupt-Bühne mit addChild, "stillHere" beginnt aufspringen in mein Bedienfeld "Ausgabe".

Mein problem ist, dass auch nach ich nenne die removeBullet, "stillHere" taucht immer wieder im Bedienfeld Ausgabe an, die mir sagt, dass das Objekt, das ich versucht zu löschen, klebt noch irgendwo in den Speicher.

Was kann ich tun, um es loszuwerden vollständig?

Hallo, bist du sicher, dass Kugeln[id] gibt den Verweis auf die Kugel Instanz? Versuchen Sie zu verfolgen( Kugeln[id] ) zu prüfen, ob es nicht undefined.
Ja, es funktioniert. Die Funktion erfolgreich entfernt die Kugel optisch aus dem Bildschirm zu.
kennen Sie Objekt-pools? Es gibt eine Reihe von Implementierungen bereit zu verwenden, und Sie können Ihre eigenen, auch für diese Art von Sachen (Kugeln).

InformationsquelleAutor Lebowski156 | 2011-02-09

Schreibe einen Kommentar