Instance-Namen aus externer swf aufrufen

Pantalaimon

Mitglied
Hallo Zusammen,

ich erstelle 2 neue MC's über createEmptyMovieClip (mc1 und mc2) und lade in diese mc's jeweils 1 swf Datei hinein. Jetzt möchte ich, dass ich den Inhalt aus mc2 in mc1 reinlade. Aber den nicht den ganzen swf, sondern nur ein einzelnes Objekt über seinen Instancenamen.

PHP:
_root.mc1.attachMovie("objekt2", "objekt2_mc", _root.mc1.getNextHighestDepth());

Dies funktioniert leider nicht. Was ist zu beachten um diese Funktion sauber ausführen zu können?

Vielen Dank!
 
He,

Ich weiß jetzt nicht genau um die Struktur deiner swfs, aber eventuell wäre es an dieser Stelle einfacher, duplicateMovieClip zu verwenden, weil attachMovie ja auf die Bibliothek der anderen swf zugreifen würde.

Du musst schon _level0.mc2.objekt2 als Pfad angeben - also zuerst auf den Hauptfilm zurück (_level0) und dann in die andere swf (mc2). Wenn das nicht geht:

Wieso kopierst du nicht einfach den entsprechenden MovieClip in die swf1 mit hinein, also in die Bibliothek?
Ist der Movieclip, den du attachieren willst, denn auch für Actionscript exportiert?
 
Hi,

ich bin nicht sicher, ob Du das meinst, aber Instanzierungen über Filmgrenzen hinweg (z.B. Film A lädt Film B und will dann ein Objekt aus der Bibliothek von Film B instanzieren) sind nicht ohne weiteres möglich (übrigens auch nicht umgekehrt: Film B kann nicht auf die Bibliothek von Film A zugreifen).

Eine Alternative wären ggf. Shared-Libraries.

Gruß
.
 
Ich versuche mal den Ablauf des Filmes zu erläutern:

1. Ich erzeuge 2 leere MC's (mc1 und mc2)
2. Per loadMovie lade ich die erste.swf in mc1 und die zweite.swf in mc2
3. Jetzt soll per Button oder was auch immer, das Objekt2 aus mc2 in mc1 hineingeladen werden.
4. Alternativ könnte auch ein weiterer mc3 erstellt werden, in dem Objekt1 aus mc1 und Objekt2 aus mc2 geladen wird.

Ich hoffe man kann es nachvollziehen.
 
Shared-Libraries wäre ein guter Ansatz. Aber wird die Library nicht immer gleich komplett geladen? Ich würde die Library nur bei Bedarf einladen wollen. Ist das möglich?
 
Hi,

na ja, Du setzt die Exporteinstellungen des Clips in zweite.swf auf "Export für gemeinsame Nutzung zur Laufzeit", und erstellst in erste.swf ein Alias per "Import für gemeinsame Nutzung zur Laufzeit". Dann wird nur dieses eine Objekt "mitgeladen". Nachteil: Besonders dynamisch ist das nicht, da die Objekte zur Entwicklungszeit festgelegt werden.

Ich habe mich letzten Sommer einige Tage mit diesem Problem herumgeschlagen, und wäre auch an einer Lösung interessiert. ;)

Übrigens: Handelt es sich um statische (sprich: nicht bewegte oder mit Verhalten ausgestattete) Objekte, so kannst Du natürlich einen Schnappschuss per BitmapData-Objekt anlegen - die lassen sich wie alle Objekte hin und her schieben.

Gruß
.
 
Ich habe schon das Workaround für die externe Library schon abgearbeitet. Mein Problem ist jetzt, wie ich die Elemente aus der Library auf die Bühne bekomme. Über attachMovie bekomme ich keine Inhalte angezeigt.
Gibt es hier etwas zu beachten?
 
Wie gesagt: In der Bibliothek des aufrufenden Filmes muss sich ein Alias-Objekt (import für gemeinsame Nutzung zur Laufzeit) befinden.

Sollte das nicht klappen, poste bitte mal die beteiligten Quelldateien.

Gruß
.
 
Aktuell folgender Stand:

Die Einbettung des mc's aus der externen swf, ist nun im Hauptfilm integriert. Gut ist, dass er das Objekt aus der Bibliothek nicht nachlädt. Nachteil ist aber, dass das Objekt nicht über den Instancenamen auf die Bühne gebracht werden kann.

Lege ich das Objekt auf die Bühne, dann kann ich mir das Objekt aus der Bibliothek greifen und attachen. Hier lädt er allerdings den externen swf komplett vor.

Jetzt muss "eigentlich" nur ein Weg gefunden werden, dass man das Laden des Objekts bei Bedarf auslöst.

Aufzurufen versuche ich den Clip so:
PHP:
_root.createEmptyMovieClip("container", _root.getNextHighestDepth());
_root.attachMovie("objekt", "objekt_mc", _root.container.getNextHighestDepth());
 
Nachteil ist aber, dass das Objekt nicht über den Instancenamen auf die Bühne gebracht werden kann.
Das wird daran liegen, dass Du das Objekt (auch das Alias-Objekt) nicht für AS ins erste Schlüsselbild exportierst (was auch erklärt, warum es geht, wenn das Ding schon auf der Bühne liegt).

Jetzt muss "eigentlich" nur ein Weg gefunden werden, dass man das Laden des Objekts bei Bedarf auslöst.
Das wird auf diese Weise nicht klappen. Inhalte aus Shared-Libaries werden immer mitgeladen, sofern sie für AS exportiert werden.

Kannst Du einmal anschaulich erkläre, was Du vorhast (und vor allem: warum Du es vorhast)? Vielleicht gibt es einen geeigneteren Weg, Dein Vorhaben umzusetzen.

Gruß
.
 
Zurück