2010-12-14 2 views
0

Hallo ich bin neu bei AS3 und ich fragte mich, was ist der beste Weg, um ein Kind zu einem Zeitpunkt zu entfernen. ich versucheActionscript 3 entfernen Kind an Punkt

Holder.removeChild(Holder.getObjectsUnderPoint(new Point(exampleX, exampleY))[0]); 

jedoch das Argument zurückgegeben: Fehler # 2025: Die mitgelieferte Display ein Kind des Anrufers sein muss.

irgendwelche Vorschläge?

Antwort

0

Die getObjectsUnderPoint() -Methode wird ein Array von Displayobjects zurück, die nicht unbedingt direkte Kinder des Halter-Objekt sein können, können sie große Kinder oder grand Kinder etc ...

Sie könnten eine bedingte gesetzt sein wie diese:

var objects:Array = Holder.getObjectsUnderPoint(yourPoint); 
for each(var child:DisplayObject in objects) 
{ 
    if(child.parent == Holder) 
     Holder.removeChild(child) ; 
} 

Holder.contains nichts filtern, da es die Enkel zurück und ... Mein Fehler!

+0

ok versuchte es. Es geht durch die Holder.contains() aber es löst immer noch denselben Fehler aus, wenn es versucht, es zu entfernen. merkwürdig huh – Dain

+0

gerade realisierte ich fehlte ein parenthese :(hast du den code sozusagen versucht oder hast du ihn geändert? – PatrickS

+0

ja ich hob das auf und fügte es hinzu. ich entschied mich, die übergeordnete der objekte in der objekte array und Es gab mir die Art von Objekt, das es anstelle des Halters war: S. Jedenfalls habe ich Mattias verwendet hässliche Code-Lösung – Dain

0

Ich weiß nicht, warum Patricks Version nicht funktioniert. Hier ist eine alternative Lösung (hässlicher Code), die den Elternteil des Clips verwendet.

var clips : Array = _container.getObjectsUnderPoint(_point); 

for each(var clip : DisplayObject in clips) 
{ 
    clip.parent.removeChild(clip); 
} 
+0

kann es hässlich sein, aber es scheint zu funktionieren, danke! – Dain