Wie lese ich den Wert einer Texteingabe in einer Flash SWF von einer Flex App?

Ich habe eine Flex-Anwendung, die eine SWF von CS3 lädt. Die geladene SWF enthält eine Texteingabe namens "myText". Ich kann das im SWFLoader.content ohne Probleme sehen, aber ich weiß nicht, welchen Typ ich in meiner Flex App behandeln soll. Ich dachte, dass die Flex-Dokumente dies abdecken, aber ich kann nur herausfinden, wie ich mit einem anderen Flex SWF interagieren soll.

Der Flex-Debugger sagt mir, dass es vom Typ fl.controls.TextInput ist, was Sinn macht. Aber FlexBuilder scheint diese Klasse nicht zu kennen. Während Flash und Flex beide AS3 verwenden, hat Flex eine ganz neue Bibliothek von GUI-Klassen. Ich dachte, es hätte auch alle Flash-Klassen, aber ich kann nichts von irgendwelchen fl. *** - Paketen erfahren.

0

3 Antworten

Die fl. * Hierarchie von Klassen ist nur Flash CS3. Es ist die Flash Components 3-Bibliothek (ich glaube, es heißt, ich könnte falsch liegen). Sie benötigen die Klasse jedoch nicht, um mit dem Objekt zu arbeiten. Solange Sie in Ihrem Code, den Sie zu haben scheinen, einen Verweis darauf erhalten, können Sie den Verweis auf eine nicht typisierte Variable zuweisen und trotzdem damit arbeiten:

var textInput : * = getTheTextInput();//insert your own method here

textInput.text = "Lorem ipsum dolor sit amet";

textInput.setSelection(4, 15);

Es ist nicht notwendig, den Typ eines Objekts zu kennen, um mit ihm interagieren zu können. Natürlich verlieren Sie die Typprüfung zur Kompilierzeit, aber das ist wirklich kein großes Problem, Sie müssen nur besonders vorsichtig sein.

Wenn Sie das Objekt wirklich als reellen Typ referenzieren wollen, befindet sich die betreffende Klasse in

Adobe Flash CS3/Configuration/Component Source/ActionScript 3.0/User Interface/fl/controls/TextInput.as

... wenn Sie Flash CS3 installiert haben, da es nur mit dieser Anwendung geliefert wird.

0
hinzugefügt

Flex- und Flash-SWFs sind im Wesentlichen identisch und werden nur mit verschiedenen Tools erstellt. Ich bin nicht sicher, ob sie die gleichen Komponentenbibliotheken teilen, aber basierend auf den Paketnamen denke ich, dass sie es zumindest größtenteils tun.

Wenn es sich um eine normale Texteingabe handelt, würde ich annehmen, dass es sich um eine Instanz von mx.controls.TextInput handelt.

0
hinzugefügt

Denken Sie daran, dass wenn Sie tun, wie Theo sagte und es mit dem richtigen Typ referenziert, wird es diese Klasse in beiden swfs kompilieren, auch wenn Sie es nicht in der ersten verwenden. Leider implementieren die fl * -Klassen keine Schnittstellen, so dass Sie sie nicht an die Schnittstelle anstatt an die Implementierung schreiben können. Wenn Sie könnten, würde nur die Schnittstelle kompiliert, die viel kleiner als die Implementierung ist. Für diesen einen wird es keine große Sache sein, es wird wahrscheinlich nur ein paar kb hinzufügen, aber auf lange Sicht addiert es sich. Nur ein Kopf hoch;)

0
hinzugefügt