ich habe eine ganz einfache Kollisionsabfrage, bei der ein Moviclip entfernt werden soll, wenn er auf einen anderen trifft. Funktioniert soweit auch gut. Nur wird im Compilerfenster folgender Fehler angezeigt:
ArgumentError: Error #2025: Das angegebene DisplayObject muss ein untergeordnetes Element des Aufrufers sein.
at flash.display::DisplayObjectContainer/removeChild()
at Function/<anonymous>()
Woran kann das liegen und wie schaffe ich Abhilfe? Hab das Problem auch schon "gegoogelt" scheinen mehrere Leute schon gehabt zu haben, das Problem, aber eine Lösung fand ich nicht. Würde es etwas machen wenn ich es so lasse, weil funktionieren tut es ja....?
Beispieldatei hängt dran als CS4 + CS5!
Besten Dank.
Hatte das selbe Problem vor kurzem auch. Vielleicht ist folgende Lösung für dich zutreffend (weiß ja nicht, was du machen willst):
ActionScript:
1 2 3 4 5 6 7 8 9
function entfernen(evt:Event):void
{
if (mc2.hitTestObject(kollision))
{
if(contains((MovieClip)(evt.currentTarget)))
removeChild((MovieClip)(evt.currentTarget));
}
}
ActionScript:
1 2 3 4 5 6 7 8 9
function oEF2(e:Event):void
{
if (e.currentTarget.currentFrame >= e.currentTarget.totalFrames)
{
e.currentTarget.removeEventListener(Event.ENTER_FRAME, oEF2);
if(contains((MovieClip)(e.currentTarget)))
removeChild((MovieClip)(e.currentTarget));
}
}
Kann die .fla nicht überprüfen, da ich noch mit CS3 arbeite, aber nachfolgendes Skript sollte eigentlich tun, was du wolltest. Vielleicht reicht ja der Vergleich.
Grundsätzlich, stelle sicher, dass:
- der MC nur einmal versucht wird, zu entfernen
- die parents des MCs ins removeChild mit einbezogen werden (in deinem Fall eher unwahrscheinliche Fehlerquelle)
bis jetzt bin ich mit der Lösung von "aprik0" ganz gut gefahren, nun habe ich aber folgendes Problem: Es soll zusätzlich auch noch ein Ton abgespielt werden bei der Kollision, was auch geht, nur wird der Ton mehrfach abgespielt, d. h. es werden mehrere Kollisionen erkannt obwohl nur eine stattfindet. Kann mir einer den Grund und bestenfalls auch noch eine Lösung dafür präsentieren ;-)
Also der Ton wurde mehrfach abgespielt, hab das aber nun schon irgendwie hinbekommen. Frag mich nicht wie, hab einfach ein bissl rumprobiert mit deiner Lösung. ;-)