Wyświetlanie tekstu

Flash Player 9 i nowsze wersje, Adobe AIR 1.0 i nowsze wersje

Mimo że narzędzia do tworzenia treści, takie jak Adobe Flash Builder i Flash Professional, oferują kilka opcji wyświetlania tekstu, w tym składniki i narzędzia tekstowe, najprostszym sposobem programowego wyświetlania tekstu jest użycie pola tekstowego.

Typy tekstu

Typ tekstu w polu tekstowym zależy od jego źródła:

  • Tekst dynamiczny

    Do tekstu dynamicznego zalicza się treść ładowaną ze źródła zewnętrznego, takiego jak plik tekstowy, plik XML, a nawet zdalna usługa Web Service.

  • Tekst wejściowy

    Tekst wejściowy jest to tekst wprowadzany przez użytkownika lub tekst dynamiczny, który może być edytowany przez użytkownika. Istnieje możliwość skonfigurowania arkusza stylów do formatowania tekstu wejściowego lub użycia klasy flash.text.TextFormat w celu przypisania właściwości do treści wprowadzonej w polu tekstowym. Więcej informacji zawiera sekcja Przechwytywanie tekstu wprowadzanego przez użytkownika .

  • Tekst statyczny

    Tekst statyczny można tworzyć wyłącznie w programie Flash Professional. Nie jest możliwe utworzenie instancji tekstu statycznego za pomocą kodu ActionScript 3.0. Można jednak używać klas języka ActionScript, takich jak StaticText i TextSnapshot, do manipulowania istniejącą instancją tekstu statycznego. Więcej informacji zawiera sekcja Praca z tekstem statycznym .

Modyfikowanie treści pola tekstowego

Tekst dynamiczny można definiować, przypisując ciąg znaków do właściwości flash.text.TextField.text Ciąg przypisuje się bezpośrednio do właściwości w następujący sposób:

myTextField.text = "Hello World";

Można także przypisać właściwości text wartość zmiennej zdefiniowanej w skrypcie, co ilustruje poniższy przykład:

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

Alternatywnym rozwiązaniem jest przypisanie właściwości text wartości zmiennej zdalnej. Dostępne są trzy opcje wczytywania wartości tekstowych ze źródeł zdalnych:

  • Klasy flash.net.URLLoader i flash.net.URLRequest ładują zmienne tekstowe z lokalizacji lokalnej lub zdalnej.

  • Atrybut FlashVars osadzony w stronie HTML zawierającej plik SWF i może zawierać wartości zmiennych tekstowych.

  • Klasa flash.net.SharedObject zarządza trwałym magazynem wartości. Więcej informacji zawiera sekcja Przechowywanie danych lokalnie .

Wyświetlanie tekstu HTML

Klasa flash.text.TextField zawiera właściwość htmlText , za pomocą której można określić, że ciąg tekstowy zawiera znaczniki HTML służące do formatowania treści. Tak jak zilustrowano to w poniższym przykładzie, aby tekst był renderowany jako HTML w odtwarzaczu Flash Player lub środowisku AIR, należy przypisać wartość ciągu do właściwości htmlText (a nie do właściwości text ):

var myText:String = "<p>This is <b>some</b> content to <i>render</i> as <u>HTML</u> text.</p>"; 
myTextBox.htmlText = myText;

Odtwarzacz Flash Player i środowisko AIR obsługują podzbiór znaczników i elementów języka HTML, jakie mogą znaleźć się we właściwości htmlText . Szczegółowe informacje o obsługiwanych znacznikach i elementach języka HTML zawiera opis właściwości flash.text.TextField.htmlText w Skorowidzu języka ActionScript 3.0.

Po zdefiniowaniu treści za pomocą właściwości htmlText można używać arkuszy stylów lub znacznika textformat do zarządzania formatowaniem treści. Więcej informacji zawiera sekcja Formatowanie tekstu .

Używanie obrazów w polach tekstowych

Kolejną zaletą wyświetlania treści jako tekstu HTML jest możliwość umieszczania obrazów w polu tekstowym. Do obrazu lokalnego lub zdalnego można odwołać się za pomocą znacznika img . Odwołanie takie spowoduje wyświetlenie obrazu w polu tekstowym.

W poniższym przykładzie tworzone jest pole tekstowe o nazwie myTextBox zawierające w tekście obraz JPG przedstawiający oko, przechowywany w tym samym katalogu, co plik SWF:

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

Znacznik img umożliwia odwoływanie się do plików JPEG, GIF, PNG i SWF.

Przewijanie tekstu w polu tekstowym

W wielu przypadkach tekst będzie dłuższy niż pole tekstowe, w którym jest wyświetlany. Możliwe jest także utworzenie pola tekstowego, w którym użytkownik będzie mógł wprowadzić więcej tekstu, niż zmieści się w widocznym polu. W takiej sytuacji można skorzystać z właściwości klasy flash.text.TextField służących do obsługi przewijania długiej treści w poziomie lub w pionie.

Do właściwości związanych z przewijaniem należą: TextField.scrollV , TextField.scrollH i maxScrollV i maxScrollH . Właściwości tych używa się w odpowiedzi na zdarzenia, takie jak kliknięcie myszą lub naciśnięcie klawisza.

W poniższym przykładzie tworzone jest pole tekstowe o określonej wielkości, zawierające tekst, który nie mieści się w nim w całości. Gdy użytkownik kliknie w polu tekstowym, tekst jest przewijany w pionie.

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