"flache" und "tiefe" Kopie von verschachtelten Flash- MovieClips?

stso

Mitglied
Hallo,
ich habe folgendes Problem: Ich habe menschliche Figur in einer Vorderansicht gebaut. Nun habe ich einen Arm fertig gestellt und wollte diesen kopieren.

Der Arm an sich ist ein MovieClip der einen weiteren Movieclip namens "unterarm" enthält. Der Movieclip "unterarm" wiederum enthält einen weiteren Movieclip namens "hand". Da ich den linken Arm zuerst erstellt habe habe ich die Instanznamen "linkerArm"(MovieClip "arm"), "linkerUnterarm"(MovieClip "unterarm") und "linkeHand"(MovieClip "hand") vergeben.

Wenn ich jetzt zum Beispiel die Animation der linken Hand anhalten möchte würde der verschachtelte Befehl so aussehen:

... .linkerArm.linkerUnterarm.linkeHand.stop();

Mein Problem ist nun wenn ich den linken Arm kopiere wird zwar vom MovieClip "arm" wirklich eine Kopie erstellt, aber das darin enthaltene MovieClip "unterarm" ist das SELBE Objekt wie im Originalarm. Wenn ich nämlich in der Kopie des Armes nun den Instanznamen "rechterUnterarm" angebe, wird auch im Originalarm der Instanzname des MovieClips "unterarm" auf "rechterUnterarm" geändert. Mit dem im MovieClip "unteram" liegendem MovieClip "hand" verhält es sich natürlich genau so. Handelt es sich hierbei um die aus der Objektorientierung bekannte "flache Kopie"?

Ist es Möglich in Flash (CS3 (9)) eine "tiefe Kopie" von solch verschachtelten MovieClips zu erstellen. Das der Kopie von "arm" also ein eigenes "unterarm" -Objekt gegeben wird. Und das dem "unterarm"-Objekt wiederum ein eigenes "hand" -Objekt gegeben wird.

Ich weiß das ich relativ umständlich formuliert habe aber vielleicht kennt ja einer von euch das Problem.
 
Hi,

ich weiß um welches Problem es sich bei dir dreht - hab aber leider nur Flash MX. Deshalb eine schnelle, aber unschöne Lösung.

in der Bibliothek klickst du jedes von dir erwähnte Objekt an dann Rechtsklick und dann Duplizieren. Gibst ihm einen anderen Symbolnahmen und tauscht diesen mit deiner kopierten Arminstanz aus. Also zuerst alle original Symbole deines Arms (Unterarm, Hand etc.) in der Bilbliothek duplizieren (dadurch entstehen neue Symbole) und ersetzt dann diese mit deiner 2. Armkopie --> Instanz auf der Bühne anklicken, dann auf Austtauschen gehen.

Viele Grüße
DJ Trancelight
 
Hi,

nein, MovieClips auf der Bühne sind immer 1:1-Kopien der Vorlage aus der Bibliothek (wie Instanzen einer Klasse). Da es sich bei Dir allerdings nur um die Benennung zu drehen scheint, kannst Du das Ding doch einfach so aufbauen:
Code:
Arm
+-- Unterarm
     +-- Hand
Dann kannst Du beide Arme so ansprechen:
Code:
linkerArm.unterArm.hand.play();

rechterArm.unterArm.hand.stop();

Es gibt verschiedene Workarounds, die Dir erlauben, verschiedene Unterobjekte mit einem gemeinsamen Hauptobjekt zu benutzen - einer wäre der Austausch eines Unterobjekts zur Laufzeit mit AttachMovie (oder die Vorgehensweise, Unterobjekte generell erst zur Laufzeit zu instanzieren).

Die "Holzhammermethode" wäre der Vorschlag von DJTrancelight: Eine Bibliothekskopie des Hauptobjekts zu erstellen - mit dem Nachteil, dass Du alle Änderungen an dem Objekt doppelt vornehmen musst.

Gruß
.
 
Hallo,
vielen Dank für eure Antworten.

@DJTrancelight: Ja, das hab ich auch so versucht. Der Nachteil war das ich die Armteile grob mit Tween-Animationen animiert habe und die Objekte für jedes Schlüsselbild austauschen musste. Nach dem Austauschen der Teile funktionierten die Twenn-Animation dann leider nicht mehr so wie sie sollten.

@Tobias Menzel: Auf die Idee bin ich nicht gekommen - hab es aber gerade ausprobiert und es geht :) .
 

Neue Beiträge

Zurück