AS3-Komponenten in Flash-Designer
In einem ActionScript-2-Projekt kann ich erstellen Sie eine neue MovieClip -, rechts-klicken Sie auf die Bibliothek und wählen Sie "Component Definition" Parameter hinzufügen, auf die verwiesen werden kann innerhalb des MovieClip. Diese Parameter können leicht geändert werden, in der MovieClips Eigenschaften.
Nun, ich arbeite an einer ActionScript 3 Projekt aber nicht in der Lage, herauszufinden, einen Weg, um die übergebenen Werte in die Parameter.
Ich definiert einen parameter mit dem Namen "textToDisplay" aber wenn ich Schreibe das folgende in die Aktionen für das erste Bild erhalte ich die Fehlermeldung:
trace(textToDisplay);
Dies ist der Fehler:
1120: Access of undefined property textToDisplay.
Wissen Sie, wie Sie erfassen den Wert dieses Parameters?
Dank
PS: ich verwende Adobe Flash CS3 Professional auf Windows XP
InformationsquelleAutor | 2008-11-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
In as3 erstellen Sie eine externe class-Datei mit einem oder mehreren
public var
Erklärungen, die Sie verwenden (Sie können auch öffentlicheget
/set
Funktionen). Google diese, wenn Sie sind nicht sicher, wie.Einer externen Datei verwenden Sie die
[Inspectable]
- Metadaten-tag, kurz vor Ihremvar
wie diese:Dann können Sie öffnen Sie die Komponenten-Definition-dialog, setzen Sie das Feld Klasse den Namen Ihrer externen Klasse (inklusive package-Namen), und Flash erstellt automatisch die Parameter für die Komponente basierend auf Ihrem
[Inspectable]
- tags. Oder Sie können diese manuell erstellen.Sobald Sie diese einrichten, können Sie den Zugriff auf die Komponente vars in der timeline-code:
Details auf der
[Inspectable]
tag (inklusive Datentypen) sind erhältlich bei der Metadaten livedocs.Es ist auch eine gute Idee, legen Sie den Namen der Klasse in dem Dialogfeld Verknüpfung zu, wenn Sie möchten, dass Ihre externen Klasse zu tun alles andere als hold-Komponente Werte.
Ich würde auch empfehlen, putting-code in Ihre externe Klasse, anstatt in der timeline. Es ist besser erweiterbar auf diese Weise. Wenn Sie dies tun, denken Sie daran, dass Ihre Komponente Parameter nicht gesetzt, bis nach der
INIT
- Ereignis ausgelöst wird. Hier ist, wie zu hören, dass:InformationsquelleAutor aaaidan
Wenn man bedenkt, wie schwer es ist, Informationen zu finden, die benutzerdefinierte Komponente setup-ich dachte, ich wäre zu klären einige Aspekte des Prozesses, basierend auf dem was ich erlebt habe.
INIT-EREIGNIS:
Zum größten Teil aaaidan Beispiel oben ist korrekt, mit einer Ausnahme.
werden sollte:
die loaderInfo-Eigenschaft eines DisplayObject-refrences ein LoaderInfo-Objekt, aus dem die Komponente erhält Ihren parameter-Einstellungen aus. das INIT-Ereignis aufgerufen wird, wenn es geworden ist, seine Daten (alternativ könnten Sie das Ereignis COMPLETE, das Feuer sollte direkt nach dem INIT)
INSPECTABLE METADATEN:
wenn Ihr einrichten der Eigenschaften, auf die zugegriffen werden, mithilfe der Metadaten [Inspectable] - Tags, können Sie auch Vorschlagswerte verwenden:
von dem, was ich habe erleben Sie die Parameter scheinen Probleme beim Umgang mit etwas anderes dann ein String (und vielleicht auch Zahlen), so würde ich empfehlen die Verwendung von set-Funktionen, die string-Werte und verwenden Sie Sie, um erhalten die anderen Werte, die Sie wünschen. zum Beispiel, wenn Sie möchten, laden Sie eine neue Instanz einer speziellen Klasse namens
in diesem Beispiel, wenn der parameter auf "blinken.display.Sprite" Berufung "new _class() wird eine neue Sprite-Instanz.
SETSIZE-FUNKTION:
wenn Sie möchten, dass Ihre benutzerdefinierten Komponente zu ändern der Größe in einer Weise, die anderen dann einfach dehnen Sie die Werte für Höhe und Breite müssen Sie eine öffentliche setSize-Funktion. diese Funktion wird jedesmal aufgerufen, wenn Sie die Größe der Komponente in flash.
nun, dies funktioniert Super, wenn Ihr eine Größenänderung der Komponente in flash, aber sobald Sie tatsächlich Ihre swf-Datei veröffentlichen, werden Sie bemerken, dass es schaltet zurück zum stretching Breite und Höhe eher dann mit der setSize-Funktion (ich weiß nicht warum, aber das ist, was es tut). um dies zu beheben, in Ihrem onInit-Funktion, die Sie brauchen, um die Breite und Höhe, füttern Sie Sie in Ihre setSize, und setzen Sie dann die scaleX-und scaleY-Werte wieder auf 1 :
(wenn jemand feststellt, dass ein weniger chaotisch Weg, dies zu tun, lassen Sie uns wissen)
hoffe, das jemand hilft, Holen Sie sich Ihre benutzerdefinierten Komponenten und runing.
Auch.ADDED_TO_STAGE zuerst kam für mich mit meinen auf der Bühne Instanzen, so landete ich hören, statt.
InformationsquelleAutor
Schließlich habe es funktioniert (mit basic-MovieClips ohne viel Erweiterungen so weit). Ich habe zwei bits hinzufügen:
[Inspectable]
- tag interpretiert wird, aber der rest des Codes ignoriert. Sogar Dinge, die im Konstruktor der Klasse.[Inspectable]
- tag scheint nicht zu funktionieren, wenn kompiliert, oder vielmehr, es wird Ergebnis innull
. Ich war nur mit einem String, die in der Komponente Parameter-box, aber Spurennull
. Auch nachEvent.INIT
(ich bin Ablaufverfolgung auf klicken). Es scheint nicht zu einem Fall "Wert nicht übernommen", wie der Eingabe der default-Wert manuell ein, immer noch zunull
. Der Vorgabe in[Inspectable]
effektiv definiert einen Wert, der nicht verwendet werden kann.P. S. mit CS5.
InformationsquelleAutor Yu-Chung Chen
Ich habe nicht verwendet diese spezifische Funktionalität, aber wahrscheinlich werden Sie brauchen, um eine benutzerdefinierte Klasse, die von MovieClip (nur Unterklasse von MovieClip) und hinzufügen, dass zusätzliche variable.
Actionscript 3 wurde verschoben, Weg von der dynamischen Natur von actionscript 2, das kann ein bisschen verwirrend sein, mit zu beginnen, aber am Ende ist es sehr viel robuster.
InformationsquelleAutor grapefrukt
Sehe ich nicht ein INIT-Ereignis in der MovieClip-Klasse-definition-und es scheint nicht genannt zu werden.
InformationsquelleAutor
Ich hatte das gleiche problem - es gibt kein INIT-Ereignis für eine MovieClip - aber ansonsten ist diese Lösung funktioniert gut. Die einzige Möglichkeit, die ich sehe, dies zu umgehen, ist die Verwendung von Veranstaltung.ENTER_FRAME und entfernen Sie den Hörer wieder ersten mal der handler aufgerufen wird. Meine Komponente Parameter wurden zugänglich das nächste Bild ab, aber ich finde es verwunderlich, dass keine offizielle Veranstaltung liegt vor, wenn ein MovieClip instanziiert.
InformationsquelleAutor
Es ist ein ADDED_TO_STAGE event, dass besser funktionieren würde als das ENTER_FRAME-Ereignis, steve-mann vorgeschlagen.
InformationsquelleAutor Kevin
In der CS4-Version 10.0.2, können Sie mit der rechten Maustaste und fügen Sie die Komponente Parameter wieder manuell.
Zwei Dinge zu beachten:
Hoffe das hilft Euch...ich weiß, es hat mir geholfen!
~Greg
InformationsquelleAutor