removeChild funktioniert nicht

EGJSoldier

Erfahrenes Mitglied
Hallo, ich muss noch einmal ganz kurz nerven. Und zwar habe ich ein Problem mit dem removeChild();
Wenn ich ein Button klicke, dann wird über addChild ein Bild erzeugt. Wenn ich dann ein anderen Button klicke, dann legt sich das Bild dadrüber. Somit kann ich das Bild, was untenliegt nicht mehr sehen, auch wenn ich den dazugehörenden Button drücke. Deswegen war meine Idee, den Child einfch zu Löschen. das will aber nicht so ganz klappen. Hier mal der Code dazu:
Code:
    private function clickHandler(e:MouseEvent):void{
      //picLoader.unload();
      picLoader.load(picRequest_click);
      picLoader.contentLoaderInfo.addEventListener(Event.INIT, posPic1);
      picLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, picInfo);
      picLoader.contentLoaderInfo.addEventListener(Event.UNLOAD, unloadHandler);
      trace(item_new);
      removeChild(mc_click);
      mc_click.addChild(picLoader);
      addChild(mc_click);
    }
Ich bekomme folgende Fehlermeldung:
Code:
ArgumentError: Error #2025: Das angegebene DisplayObject muss ein untergeordnetes Element des Aufrufers sein.
    at flash.display::DisplayObjectContainer/removeChild()
    at slider/clickHandler()

Ich danke schon mal im vorraus für die Hilfe.

MfG
EGJSoldier
 
Ich befürchte da müssen wir mehr von dem Projekt sehen - wo steht der Code, wie ist die Movieclip-Hierarchie usw. Am Besten postest du mal die fla und eventuelle as-Dateien.
 
Also erstmal ein wenig Kritik :D

Du solltest versuchen deine Variablen und auch Funktionen eindeutiger zu benennen. Es ist sehr schwer nachzuvollziehen was ein Funktion Names posPic oder posPic1 machen. Nenn sie (wenn ich die Funktion richtig verstanden hab) showThumb und showBigPic

So zu deinem Fehler, ohne das ich es jetzt genauer getestet habe, glaub ich die Logik ist falsch.

if(picLoader.parent == this){
removeChild(picLoader);
}
addChild(picLoader);

Wenn das der Code ist um die alten großen Bilder zu entfernen und das neue zu Laden ist ja die Logik hier folgende:

1. Schau ob der Parent von picLoader die Maincontainer ist (ob es schon exisiert)
2. Wenn ja dann entferne es
3. Füge es wieder hinzu

Ich das es so klar ist das du immer versuchst das neue Bild zu entfernen und danach wieder reinsetzen.

Du könntest es zB so machen:
Ein Array bigPics (alle Bilder die durch die Thumbs angesteuert werden können)
Ein Array thumbs (alle Thumbs die rechts zu sehen sind)
Eine uint currentPic (zeigt das aktuelle Pic an)

Wenn nun auf ein Thumb geklickt wird passiert folgendes:
entferne bigPics[currentPic]
lade bigPic[gedrückter thumbs Index]
currentPic = gedrückter thumbs Index

Du nutzt also die Indizies der Arrays als eindeutige Variablen und entfernst immer das alte bevor das neue kommt.
 
Ok dann hab eich noch zwei Fragen:
wie lösche ich das aktuelle Bild**** Weil da will es bei mir nicht. Habe jetzt alles so gemacht wie du gesagt hasst. Ich habe drei Array wo ich meine Bilder und meinen Text drin habe. Ich kenne den Index meines aktullen Bildes. Nur wie lösche ich jetzt das Bild. Da habe ich noch irgendwie meine Probleme mit. Also wie sage ich ihm, dass das Bild von der Bühne soll?

Ich danke schoneinmal im vorraus.

MfG
EGJSoldier
 
Zurück