Mit Hilfe von ActionScript haben Sie die Möglichkeit, während der Laufzeit dynamische Textfelder und Eingabefelder zu generieren. Sie fragen sich nun bestimmt, wozu dies denn gut sein soll? Natürlich können Sie Ihre Textfelder auch weiterhin über die Arbeitsbühne anlegen und manipulieren. Wenn Sie sich auf diese Methode beschränken, verzichten Sie vornehmlich auf mögliche Interaktionen mit dem Benutzer. Stellen Sie sich beispielsweise ein Formular vor, dessen Anzahl an Textfelder von zuvor getätigten Angaben abhängig ist. Vielleicht wollen Sie jedoch auch nur auf das Erhalten oder Verlieren des Fokus reagieren.
Das Anlegen eines Textfeldes über ActionScript ist denkbar einfach. Hierfür benötigen Sie lediglich folgende Anweisung:
| createTextField("textfeld",1, 25, 35, 350, 20); |
|
Der erste Parameter definiert den Instanzennamen. Der zweite Parameter legt wiederum die Tiefe fest. Nachfolgend bestimmen Sie mittels der letzten vier Parameter die X- und Y-Koordinate, sowie die Breite und Höhe. Der Instanzname ist sehr bedeutend. Hierüber können sie weitere Eigenschaften des Textfeldes festlegen. Die folgenden Anweisungen können übrigens ebenso zur Manipulation von Textfeldern genutzt werden, die auf der Bühne platziert wurden. Sie müssen dem Textfeld jedoch über das Bedienfeld „Eigenschaften“ einen Instanzennamen zuweisen.
Kommen wir zu den Darstellungs-Eigenschaften. Mit folgender Anweisung geben wir dem Textfeld einen Rahmen:
Durch die Zuweisung „true“ aktivieren Sie die Eigenschaft „border“ im Textfeld mit dem Instanznamen „textfeld“. Mit dem entsprechenden Pendant „false“ können Sie die Eigenschaft deaktivieren. Viele Formatierungs-, Verhaltens- und Darstellungs-Eigenschaften werden auf diese Weise vergeben. Zum Editieren der Hintergrundfarbe schalten wir diese zunächst frei. Anschließend weisen wir dem Textfeld eine Hintergrundfarbe zu:
| textfeld.background = true; | textfeld.backgroundColor = "0xcccccc"; |
|
Bisher haben wir uns auf die Darstellungs-Eigenschaften beschränkt. Lassen Sie uns das Verhalten des Textfeldes definieren, indem wir ein auswählbares Eingabetextfeld erstellen:
| textfeld.selectable = true; | textfeld.type = "input"; |
|
Statt eines Eingabetextfeldes („input“) können Sie natürlich auch ein dynamisches Textfeld („dynamic“) generieren. Zwei weitere Anweisungen genügen, um ein Textfeld mit mehreren Zeilen zu erzeugen, in dem die Wörter automatisch umgebrochen werden:
| textfeld.multiline = true; | textfeld.wordWrap = true; |
|
Damit wir das Verhalten überprüfen können, benötigt das Textfeld noch einen Text. Diesen erhalten sie mit Hilfe der folgenden Zuweisung:
| textfeld.text = „Hello World“; |
|
Der Text wird zunächst in einer Standardformatierung dargestellt. Zur Steuerung der Formatierungs-Eigenschaften müssen wir zunächst ein Formatierungsobjekt erstellen. Diesem Objekt weisen wir daraufhin die gewünschten Eigenschaften zu:
| format = new TextFormat(); | format.font = "Arial"; | format.bold = true; | format.size = 15; | format.align = "center"; | format.color = "0x000000"; |
|
Die erste Zeile erstellt das notwendige Objekt „format“. Die Zuweisung der einzelnen Formatierungs-Eigenschaften erfolgt wie zuvor beim Textfeld. Mit den obigen Zeilen definieren wir Schriftart, -größe, -ausrichtung und -farbe. Nachdem wir alle gewünschten Formatierungen vorgenommen haben, können wir dem Textfeld „textfeld“ die Eigenschaften zuweisen:
| textfeld.setTextFormat(format); |
|
Sobald ein Textfeld den Tastaturfokus erhält oder verliert, löst es ein Ereignis aus. Auf dieses Ereignis können wir natürlich mit ActionScript reagieren. Im nachfolgenden Beispiel löschen wir den Textinhalt des Feldes, wenn der Inhalt noch dem Standardtext „Hello World!“ entspricht:
| textfeld.onSetFocus = function() { | if (this.text == "Hello World!") { | this.text = ""; | } | } |
|
Das “Löschen” des Textes erreichen wir über die Zuweisung einer leeren Zeichenkette. Verliert das Textfeld den Fokus, so könnten wir beispielsweise den Standardtext erneut herstellen:
| textfeld.onKillFocus = function() { | if (this.text == "") { | this.text = "Hello World!"; | } | this.setTextFormat(format); | } |
|
Dies machen wir nur, wenn der Benutzer das Textfeld leer lässt. Ansonsten würden wir stets die Eingabe des Benutzers überschreiben. Beachten Sie, dass wir in jedem Fall eine erneute Zuweisung der Formatierungs-Eigenschaften vornehmen. Somit passen wir den neuen Text an die zuvor erstellten Formatierungs-Eigenschaften an.
Beispieldatei: Textfelder mit ActionScript [
Textfelder_mit_ActionScript.zip]