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