alle instanzen entfernen

harrry

Erfahrenes Mitglied
Hallo, ähm, :-( nochmal ich mit meiner grid-fla, in der viele Instanzen in unterschiedlichen Tiefen erstellt werden... aber wie werd ich sie wieder los? Soll heißen, wie kann ich alle Instanzen auf einen Schlag von der Bühne entfernen? removeMovieClip() anwenden, nehm ich an, aber wie...
 

Anhänge

  • 27307attachment.zip
    13 KB · Aufrufe: 12
Hi,

am besten Rekursiv:
Code:
function clearAll(obj) {
    for (var i in obj) {
        if (typeof(obj[i]) == "movieclip") {
            clearAll(obj[i]);
            obj[i].removeMovieClip();
        }
    }
}

clearAll(mcBorder);

Gruß
.
 
Vielen Dank, lieber Tobias, aber es geht leider noch nicht bei mir. Soll Dein Script in einen Frame liegen, den man dann ansteuert, um alles zu löschen? Irgendwie verhallt der Aufruf ungehört...
 
Hi,

Du musst Dich in dem Frame befinden, in dem sich die Objekte befinden, die gelöscht werden sollen. Genauer: Die Funktion kann in einem vorherigen Frame definiert sein, aber der Aufruf muss in dem Frame stehen, in dem sich die Objekte befinden. Wird der Frame direkt mit gotoAndStop angesteuert, musst Du per onEnterFrame mindestens einen Frameaufruf warten, bis die Objekte auf der Zeitleiste geparst worden sind (einer der etlichen Gründe, warum man bei dynamischen Inhalten lieber auf Zeitleisten verzichten sollte).

Poste einmal Deine Datei (fla), dann kann ich Dir den Fehler korrigieren.

Gruß
.
 
Will ja schon gar nicht mehr unbedingt Frame-Hüpfen, sondern einfach nur per Buttondruck die Dinger löschen... danke für Deine Hilfe, anbei mein Versuchsobjekt.
 

Anhänge

  • 27327attachment.zip
    14,2 KB · Aufrufe: 19
Hi,

1.
on (release) {
clearAll(mcBorder);
}
Innerhalb einer on(event)-Prozedur auf einem MovieClip befindest Du Dich innerhalb der Zeitleiste dieses MovieClips, wo die Funktion "clearAll" (und das Objekt "mcBorder") nicht bekannt ist.

2. Ich bin davon ausgegangen, dass Du Deine dynamischen Instanzen in dem MC "mcBorder" erstellst - das ist aber nicht der Fall, Du erstellst sie auf _root. Es bringt also nichts, den mcBorder zu "leeren", sondern Du musst alle dynamisch erstellten Clips auf der Hauptzeitleiste entfernen. Korrekt wäre also:
Code:
on (release) {
	_parent.clearAll(_parent);
}

Gruß
.
 
Mit rekursiver Programmierung muss ich mich erst noch anfreunden...
Habe bis weilen noch nicht verstanden wozu sich Funktionen selber aufrufen...
 
Zurück