Instanziierung von dynamisch geladenen Klassen
Ich stehe gerade vor dem Problem dass ich Klassen aus einer externen SWF Datei instanziieren möchte. Die SWF Datei wird mit Hilfe eines Loaders geladen.
Einen Weg dies zu tun habe ich im Blog von Scott Morgan gefunden. <Link>
Dazu wird nach dem erfolgreichen Laden der externen SWF Datei eine neue Klasse definiert:
var NewClass:Class = loader.content.loaderInfo.applicationDomain.getDefinition("klasse") as Class;
Danach kann man mit Hilfe des new Operators die Klasse jederzeit instanziieren:
var neueInstanz:MovieClip = MovieClip(new NewClass());
Ein Problem entsteht leider wenn die geladene Klasse weitere Klassen verwendet welche mit einem Symbol aus der Bibliothek verknüpft sind. Diese Verknüpfung scheint beim Import verloren zu gehen. Beispiel:
Bibliothek vom externen MovieClip:
- Symbol “Raum” der Klasse “CRaum”
- Symbol “Stuhl” der Klasse “CStuhl”
Der Raum enthält verschiedene Instanzen der Klasse CStuhl
Wenn man nun den externen MC lädt und wie oben beschrieben eine neue Klasse instanziiert meldet Flash einen “TypeError: Error #1034″. Die Klasse MovieClip#234 kann nicht in CStuhl umgewandelt werden. Ich werde mich dann mal auf Fehlersuche begeben und bei Erfolg hier meine Lösung posten.
[EDIT] Ein Schlüsselwort ist wohl die ApplicationDomain. Ein paar Hinweise gibt es bei Adobe <Link>. Aber so funktionieren tut es dennoch nicht.
Noch keine Kommentare vorhanden.