Anzeigen von Text

Flash Player 9 und höher, Adobe AIR 1.0 und höher

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++; 
        } 
    } 
}