2 Stimmen

Kompilieren einer Swc in Flash für die Verwendung in Flex, mit einer in Flex geschriebenen Klasse

GUT,

Das klingt kompliziert, ist es aber nicht. Es geht los: Ich möchte einige Elemente (Schaltflächen usw.), die ich in Flash erstellt habe, in einem Flex-Actionscript-Projekt verwenden. Da alle meine Assets weniger als 10K groß sind, habe ich nicht vor, eine SWF zu laden, zu warten, bis sie geladen ist, und die Schnittstelle zu erstellen. Ich möchte eine swc verwenden und nur die Clips instanziieren, die ich brauche. Außerdem möchte ich meine Button-Klasse, um einige zusätzliche Eigenschaften haben, und das ist, wo das Problem auftritt.

Wenn ich in den Verknüpfungseigenschaften in der Flash-IDE einen Verweis auf eine benutzerdefinierte Schaltflächenklasse hinzufüge und ein Kind des Schaltflächen-Movieclips verfolge, erhalte ich die richtige Verfolgung. Wenn ich dann einen Button in der Main-Klasse in Flex mit der generierten swc-Datei erstelle und das gleiche Kind des Button-MovieClips verfolge, erhalte ich null.

Warum ist das so? Gibt es eine Möglichkeit, dies zu umgehen? Ich habe in Betracht gezogen, das Flex Component Kit zu verwenden, aber da ich an einem einfachen Actionscript-Projekt arbeite und nicht das Flex-Framework verwende, sehe ich zu diesem Zeitpunkt keinen Sinn darin, das Component Kit zu verwenden.

Danke!

3voto

George Profenza Punkte 47681

Ich glaube, ich hab's.

Mein Button MovieClip war mit einer Klasse im gleichen src-Ordner wie der Rest meines Actionscript-Codes im Flex-Actionscript-Projekt verknüpft. (Der as3-Klassenpfad wurde auf "../" gesetzt, vom Assets-Ordner, in dem sich die .fla-Datei befindet, eine Ebene höher als src)

Als Flash kompilierte, wurde die Klasse gefunden und ich bekam die .swc-Datei. Deshalb habe ich das Symbol von Flash getraced. Beim Kompilieren von Flex wurde die Klasse im src-Verzeichnis gefunden, also wurde eine neue Version derselben Klasse kompiliert, obwohl sie bereits in der swc-Datei vorhanden war. Da Flex die .as-Datei fand, aber nicht wusste, dass ich sie mit einem Symbol in der Flash-IDE verknüpft hatte (ich glaube nicht, dass es das kann), erstellte Flex seine Version der Klasse, aber da kein Symbol mit dieser Klasse verknüpft war, war das Kind von Button, das ich verfolgte, null.

Ich schätze, dass die Verwendung von Paketen und die Trennung der verknüpften Klassen, damit Flex nicht dieselbe Klasse zweimal kompiliert.

Das Seltsame ist, dass ich weder eine Warnung noch eine Fehlermeldung erhalten habe, so dass ich davon ausging, dass alles in Ordnung ist.

Eine schnelle und nicht so schmutzige Lösung bestand darin, die physische Button-Klasse aus dem Dateisystem zu löschen, so dass Flash seine eigene Version zur Kompilierungszeit generieren und Referenzen auf die Kinder des Button-Symbols haben konnte. Dann habe ich in Flex eine Klasse erstellt, die Button erweitert, und den benötigten Code hinzugefügt. Da die generierte Klasse in der .swc-Datei kompiliert wurde, konnte Flex sie sehen und ich hatte kein Problem mit der Erweiterung.

Das war's! Bob ist dein Onkel!

Ich gehe davon aus, dass ich mir nicht zu 100 % sicher bin, was passiert. Es ist etwas, das meine Intuition durch Beobachtung für selbstverständlich hält, also könnte ich technisch falsch liegen. Wenn jemand eine Korrektur hat, ist sie willkommen.

2voto

kenneth Punkte 1055

Ich bin nicht sicher, ob ich Ihre Frage richtig lese, aber wollen Sie im Wesentlichen ein Bild/Asset einbetten, das von Anfang an verfügbar ist, anstatt das Bild/Asset zu laden, sobald die App initilises?

Wenn dies der Fall ist, sollten Sie sich diesen Link ansehen. Er erklärt, wie man ein beliebiges Asset in ein Actionscript-Projekt einbettet. http://kennethsutherland.com/2009/04/21/why-flex-why-actionscript-why-flash/

Ich hoffe, das ist das, was Sie suchen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X