Tekst weergeven

Flash Player 9 of hoger, Adobe AIR 1.0 of hoger

Hoewel ontwerpgereedschappen zoals Adobe Flex Builder en Flash Professional verschillende opties bieden voor tekstweergave, inclusief tekstgerelateerde componenten of tekstgereedschappen, is weergave via een tekstveld de eenvoudigste wijze om tekst via programmacode weer te geven.

Typen tekst

Het type tekst in een tekstveld wordt bepaald door de bron ervan:

  • Dynamische tekst

    Dynamische tekst is inhoud die wordt geladen van een externe bron, zoals een tekstbestand, een XML-bestand of zelfs een externe webservice.

  • Invoertekst

    Invoertekst is alle tekst die wordt ingevoerd door een gebruiker of dynamische tekst die een gebruiker kan bewerken. U kunt een opmaakmodel opzetten om invoertekst op te maken of u kunt de klasse flash.text.TextFormat gebruiken om eigenschappen toe te wijzen aan het tekstveld voor de invoerinhoud. Zie Tekstinvoer vastleggen voor meer informatie.

  • Statische tekst

    Statische tekst wordt alleen via Flash Professional gemaakt. U kunt geen instantie van statische tekst maken met behulp van ActionScript 3.0. U kunt echter wel ActionScript-klassen als StaticText en TextSnapshot gebruiken om een bestaande instantie van statische tekst te manipuleren. Zie Werken met statische tekst voor meer informatie.

Inhoud van tekstvelden wijzigen

U kunt dynamische tekst definiëren door een string toe te wijzen aan de eigenschap flash.text.TextField.text . U wijst als volgt een tekenreeks direct toe aan de eigenschap:

myTextField.text = "Hello World";

U kunt ook aan de eigenschap text een waarde toewijzen uit een variabele die in uw script is gedefinieerd, zoals in het volgende voorbeeld:

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

Als alternatief kunt u aan de eigenschap text een waarde toewijzen uit een externe variabele. U hebt drie opties voor het laden van tekstwaarden uit externe bronnen:

  • Met de klassen flash.net.URLLoader en flash.net.URLRequest laadt u variabelen voor de tekst vanuit een lokale of externe locatie.

  • Het kenmerk FlashVars is ingesloten in de HTML-pagina die als host dient voor het SWF-bestand en kan waarden bevatten voor tekstvariabelen.

  • Met de klasse flash.net.SharedObject beheert u de permanente opslag van waarden. Zie Lokale gegevens opslaan voor meer informatie.

HTML-tekst weergeven

De klasse flash.text.TextField heeft een eigenschap htmlText waarmee u uw tekstreeks kunt identificeren als een reeks die HTML-tags bevat voor het opmaken van de inhoud. Zoals te zien is in het volgende voorbeeld, moet u de tekenreekswaarde toewijzen aan de eigenschap htmlText (niet de eigenschap text ) om Flash Player of AIR de tekst te laten weergeven als HTML:

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 en AIR ondersteunen een subset van de HTML-tags en -entiteiten voor de eigenschap htmlText . De eigenschapsbeschrijving flash.text.TextField.htmlText in de Naslaggids voor ActionScript 3.0 voor het Adobe Flash-platform biedt gedetailleerde informatie over de ondersteunde HTML-tags en -entiteiten.

Wanneer u de inhoud hebt aangegeven met de eigenschap htmlText , kunt u met stijlpagina's of de tag textformat de opmaak van de inhoud beheren. Zie Tekst opmaken voor meer informatie.

Afbeeldingen gebruiken in tekstvelden

Een ander voordeel van het weergeven van inhoud als HTML-tekst is dat u afbeeldingen in het tekstveld kunt opnemen. U kunt naar een lokale of externe afbeelding verwijzen met de tag img en de afbeelding laten verschijnen in het betreffende tekstveld.

In het volgende voorbeeld wordt een tekstveld met de naam myTextBox gemaakt en wordt in de weergegeven tekst een JPG-afbeelding van een oog opgenomen die in dezelfde map is opgeslagen als het SWF-bestand:

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

De tag img ondersteunt JPEG-, GIF-, PNG- en SWF-bestanden.

Schuivende tekst in een tekstveld

In veel gevallen kan de tekst langer zijn dan het tekstveld waarin de tekst wordt weergegeven. Of u hebt misschien een invoerveld waarin gebruikers tekst kunnen invoeren die langer is dan in één keer kan worden weergegeven. U kunt met behulp van de aan schuiven gerelateerde eigenschappen van de klasse flash.text.TextField lange inhoud beheren, zowel verticaal als horizontaal.

De aan schuiven gerelateerde eigenschappen omvatten TextField.scrollV , TextField.scrollH en maxScrollV en maxScrollH . Gebruik deze eigenschappen om te reageren op gebeurtenissen, zoals een muisklik of een druk op een toets.

In het volgende voorbeeld wordt een tekstveld gemaakt dat een setgrootte is en meer tekst bevat dan het veld in één keer kan weergeven. Als de gebruiker op het tekstveld klikt, wordt de tekst verticaal geschoven.

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