Obwohl in Authoring-Tools wie Adobe Flash Builder oder Flash Professional mehrere Optionen zum Anzeigen von Text verfügbar sind, einschließlich textbezogener Komponenten oder Textwerkzeuge, erfolgt die Textanzeige im Programmcode hauptsächlich über Textfelder.
Texttypen
Der Typ des Textes innerhalb eines Textfelds ist durch die jeweilige Quelle charakterisiert.
-
Dynamischer Text
Dynamischer Text ist Inhalt, der aus einer externen Quelle geladen wird, z. B. aus einer Textdatei, einer XML-Datei oder einem Remote-Webservice.
-
Eingabetext
Eingabetext ist jeder von einem Benutzer eingegebene Text oder dynamischer Text, der von Benutzern bearbeitet werden kann. Sie können ein Stylesheet zum Formatieren von Eingabetext einrichten oder die flash.text.TextFormat-Klasse verwenden, um dem Eingabetext im Textfeld Eigenschaften zuzuweisen. Weitere Informationen finden Sie unter
Erfassen von Texteingaben
.
-
Statischer Text
Statischer Text wird nur von Flash Professional erstellt. Mit ActionScript 3.0 können Sie keine statische Textinstanz erstellen. Sie können jedoch ActionScript-Klassen, wie StaticText und TextSnapshot, verwenden, um eine vorhandene statische Textinstanz zu bearbeiten. Weitere Informationen finden Sie unter
Verwenden von statischem Text
.
Ändern der Inhalte von Textfeldern
Sie können dynamischen Text definieren, indem Sie der
flash.text.TextField.text
-Eigenschaft einen String zuweisen. Das direkte Zuweisen eines Strings zu der Eigenschaft geschieht wie folgt:
myTextField.text = "Hello World";
Sie können auch wie im folgenden Beispiel der
text
-Eigenschaft den Wert einer im Skript definierten Variablen zuweisen:
package
{
import flash.display.Sprite;
import flash.text.*;
public class TextWithImage extends Sprite
{
private var myTextBox:TextField = new TextField();
private var myText:String = "Hello World";
public function TextWithImage()
{
addChild(myTextBox);
myTextBox.text = myText;
}
}
}
Alternativ können Sie der
text
-Eigenschaft den Wert einer Remote-Variablen zuweisen. Zum Laden von Textwerten aus Remote-Quellen stehen drei Optionen zur Auswahl:
-
Mit den Klassen flash.net.URLLoader und flash.net.URLRequest werden Variablen für den Text von einem lokalen oder entfernten Speicherort geladen.
-
Das
FlashVars
-Attribut ist in die HTML-Seite mit der SWF-Datei eingebettet und kann Werte für Textvariablen enthalten.
-
Mit der flash.net.SharedObject-Klasse wird die dauerhafte Speicherung von Werten verwaltet. Weitere Informationen finden Sie unter
Speichern lokaler Daten
.
Anzeigen von HTML-Text
Die flash.text.TextField-Klasse verfügt über eine
htmlText
-Eigenschaft, mit der Sie angeben können, dass der Textstring HTML-Tags zum Formatieren des Inhalts enthält. Wie im folgenden Beispiel zu sehen ist, müssen Sie den Stringwert zur
htmlText
-Eigenschaft (und nicht zur
text
-Eigenschaft) zuweisen, damit der Text in Flash Player oder AIR als HTML dargestellt wird:
var myText:String = "<p>This is <b>some</b> content to <i>render</i> as <u>HTML</u> text.</p>";
myTextBox.htmlText = myText;
Flash Player und AIR unterstützen einen Teil der HTML-Tags und HTML-Entitäten für die
htmlText
-Eigenschaft. Die Beschreibung der
flash.text.TextField.htmlText
-Eigenschaft im ActionScript 3.0-Referenzhandbuch enthält ausführliche Informationen zu den unterstützten HTML-Tags und HTML-Entitäten.
Nachdem Sie den Inhalt mit der
htmlText
-Eigenschaft angegeben haben, können Sie die entsprechende Formatierung mithilfe von Stylesheets oder des
textformat
-Tags festlegen. Weitere Informationen finden Sie unter
Formatieren von Text
.
Verwenden von Bildern in Textfeldern
Ein weiterer Vorteil der Anzeige von Inhalten als HTML-Text besteht darin, dass Sie Bilder in das Textfeld einfügen können. Mithilfe des
img
-Tags können Sie auf lokale oder entfernte Bilder verweisen und diese innerhalb des entsprechenden Textfelds anzeigen.
Im folgenden Beispiel wird ein Textfeld mit dem Namen
myTextBox
erstellt und in den Anzeigetext wird das JPG-Bild eines Auges eingefügt, das sich im selben Verzeichnis wie die SWF-Datei befindet:
package
{
import flash.display.Sprite;
import flash.text.*;
public class TextWithImage extends Sprite
{
private var myTextBox:TextField;
private var myText:String = "<p>This is <b>some</b> content to <i>test</i> and <i>see</i></p><p><img src='eye.jpg' width='20' height='20'></p><p>what can be rendered.</p><p>You should see an eye image and some <u>HTML</u> text.</p>";
public function TextWithImage()
{
myTextBox.width = 200;
myTextBox.height = 200;
myTextBox.multiline = true;
myTextBox.wordWrap = true;
myTextBox.border = true;
addChild(myTextBox);
myTextBox.htmlText = myText;
}
}
}
Das
img
-Tag unterstützt JPEG-, GIF-, PNG- und SWF-Dateien.
Bildlauf in Textfeldern
In vielen Fällen ist der Text länger als das Textfeld, in dem er angezeigt wird. Möglicherweise verwenden Sie auch ein Eingabefeld, in dem Benutzer mehr Text eingeben können, als auf einmal angezeigt werden kann. Zum Verwalten umfangreicher Inhalte können Sie die mit dem vertikalen und horizontalen Bildlauf verknüpften Eigenschaften der flash.text.TextField-Klasse verwenden.
Dazu gehören
TextField.scrollV
,
TextField.scrollH
,
maxScrollV
und
maxScrollH
. Verwenden Sie diese Eigenschaften, um auf Ereignisse wie Mausklicks oder einen Tastendruck zu reagieren.
Im folgenden Beispiel wird ein Textfeld fester Größe erstellt, das mehr Text enthält, als auf einmal angezeigt werden kann. Wenn der Benutzer auf das Textfeld klickt, wird ein vertikaler Bildlauf des Textes durchgeführt.
package
{
import flash.display.Sprite;
import flash.text.*;
import flash.events.MouseEvent;
public class TextScrollExample extends Sprite
{
private var myTextBox:TextField = new TextField();
private var myText:String = "Hello world and welcome to the show. It's really nice to meet you. Take your coat off and stay a while. OK, show is over. Hope you had fun. You can go home now. Don't forget to tip your waiter. There are mints in the bowl by the door. Thank you. Please come again.";
public function TextScrollExample()
{
myTextBox.text = myText;
myTextBox.width = 200;
myTextBox.height = 50;
myTextBox.multiline = true;
myTextBox.wordWrap = true;
myTextBox.background = true;
myTextBox.border = true;
var format:TextFormat = new TextFormat();
format.font = "Verdana";
format.color = 0xFF0000;
format.size = 10;
myTextBox.defaultTextFormat = format;
addChild(myTextBox);
myTextBox.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownScroll);
}
public function mouseDownScroll(event:MouseEvent):void
{
myTextBox.scrollV++;
}
}
}
|
|
|