2009-07-28 17 views
0

Okay, ich habe ein Flash CS3 (+ AS3) Programm, das ein anderes Flash-Programm lädt (in diesem Beispiel "pacman_main.swf" genannt). Ich habe festgestellt, das ist eine ziemlich alte SWF, wie es in Flash 5 und AS1 (yippee!) Gemacht wird.AS3 Wrapper Zugriff auf AS1 Variablen

Ich möchte die übergeordnete SWF (a.k.a. der Wrapper) in der Lage sein, auf die Variablen, insbesondere die Punktzahl, der untergeordneten SWFG zuzugreifen (a.k.a. "pacman_main.swf"). Dies ist so, dass ich das Ergebnis an eine PHP/mySQL db blah blah von Drittanbietern übermitteln kann.

Ich kenne den Variablennamen des Ergebnisses mit Debug> List Variables nach dem Erstellen des Wrappers. Die Punktzahl ist eine Variable, die als "Variable _level0.instance5.instance6.score = 180" aufgelistet wird, nachdem 18 Punkte im Spiel gesammelt wurden. Wie würde ich in meiner "checkScore" Funktion darauf zugreifen?

Danke!

Antwort

1

Die neuesten Flash Player verfügen über zwei virtuelle Maschinen, die AVM2 für as3 und AVM1 für as2/as1. Aus diesem Grund, wenn Sie ein as1/as2 SWF in Flash laden, ist es vom Typ AVM1Movie, der von der AVM1 ausgeführt wird. Leider hat der AVM2 wenig Zugriff auf die Objekte, die auf AVM1 laufen, tatsächlich ist "keine Interoperabilität (wie der Aufruf von Methoden oder die Verwendung von Parametern) zwischen dem AVM1Movie-Objekt und AVM2-Objekten erlaubt".

Haben Sie Zugriff auf den as1-Quellcode? Wenn Sie vorschlagen, dass Sie Ereignisse jedes Mal abfeuern, wenn sich der Score ändert, können Sie diese Ereignisse in Ihrer Wrapper-Klasse abhören und müssen sich keine Gedanken über den direkten Zugriff auf die Score-Variable machen.

Sie können mehr über AVM1Movie here

lesen