Visa text

Flash Player 9 och senare, Adobe AIR 1.0 och senare

Utvecklingsverktyg som Adobe Flash Builder och Flash Professional har flera alternativ för textvisning, inklusive textrelaterade komponenter och textverktyg, men det enklaste sättet att programmässigt visa text är via ett textfält.

Typer av text

Typen av text i ett textfält karakteriseras av sin källa:

  • Dynamisk text

    Dynamisk text inkluderar innehåll som läses in från en extern källa, t.ex. en textfil, en XML-fil eller en webbtjänst.

  • Inmatningstext

    Inmatningstext är text som användaren skriver eller dynamisk text som användaren kan redigera. Du kan ange en formatmall för att formatera inmatningstexten eller använda klassen flash.text.TextFormat om du vill tilldela egenskaper för det inmatade innehållet i textfältet. Mer information finns i Hämta textinmatningar.

  • Statisk text

    Statisk text skapas endast i Flash Professional. Du kan inte skapa en statisk textinstans med ActionScript 3.0, men du kan använda ActionScript-klasser som StaticText och TextSnapshot när du vill ändra en statisk textinstans. Mer information finns i Arbeta med statisk text.

Ändra innehåll i textfält

Du kan definiera dynamisk text genom att tilldela en sträng till egenskapen flash.text.TextField.text. Du kan tilldela en sträng direkt till egenskapen på följande sätt:

myTextField.text = "Hello World";

Du kan även tilldela text-egenskapen ett värde från en variabel som definierats i ditt skript, som i exemplet nedan:

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

Alternativt kan du tilldela text-egenskapen ett värde från en fjärrvariabel. Det finns tre alternativ för att läsa in textvärden från fjärrkällor:

  • Klasserna flash.net.URLLoader och flash.net.URLRequest läser in variabler för texten från en lokal plats eller fjärrplats.

  • Attributet FlashVars är inbäddat i HTML-sidan som är värd för SWF-filen och det kan innehålla värden för textvariabler.

  • Klassen flash.net.SharedObject hanterar upprepad lagring av värden. Mer information finns i Lagra lokala data.

Visa HTML-text

Med klassen flash.text.TextField kan du använda egenskapen htmlText när du vill identifiera textsträngen som en sträng som innehåller HTML-taggar för formatering av innehåll. Du måste tilldela strängvärdet till egenskapen htmlText (inte text-egenskapen) för Flash Player eller AIR om du vill visa text som HTML, så som i exemplet nedan:

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 och AIR har stöd för en delmängd HTML-taggar och entiteter för egenskapen htmlText. Egenskapsbeskrivningen för flash.text.TextField.htmlText i Referenshandbok för ActionScript® 3.0 i Adobe® Flash® Professional CS5 innehåller detaljerad information om de HTML-taggar och entiteter som stöds.

När du anger innehåll med egenskapen htmlText kan du använda formatmallar eller taggen textformat när du vill formatera innehållet. Mer information finns i Formatera text.

Använda bilder i textfält

En annan fördel med att visa innehållet som HTML-text är att du kan inkludera bilder i textfältet. Du kan skapa en referens till en lokal bild eller en fjärrbild med taggen img och visa den i det tillhörande textfältet.

Exemplet nedan skapar ett textfält kallat myTextBox som inkluderar en JPG-bild av ett öga som lagras i samma katalog som SWF-filen i texten som visas:

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

Taggen img har stöd för JPEG-, GIF-, PNG- och SWF-filer.

Rulla text i ett textfält

I många fall kan din text vara längre än textfältet som visar texten. Eller du kan ha ett inmatningsfält där användaren kan skriva mer text än det som kan visas samtidigt. Du kan använda rullningsegenskaperna i klassen flash.text.TextField när du vill hantera långt innehåll, antingen lodrätt eller vågrätt.

Rullningsegenskaperna inkluderar TextField.scrollV, TextField.scrollH och maxScrollV samt maxScrollH. Använd egenskaperna när du vill svara på händelser, t.ex. ett musklick eller en tangenttryckning.

Exemplet nedan skapar ett textfält med en fast inställd storlek som innehåller mer text än fältet kan visa. Texten rullar lodrätt när användaren klickar på textfältet.

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