Praca z tekstem statycznym

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

Tekst statyczny można tworzyć wyłącznie w programie Flash Professional. Nie można programowo tworzyć instancji tekstu statycznego w kodzie ActionScript. Tekst statyczny jest przydatny, gdy treść jest krótka i nie przewiduje się jej zmiany. Tekst statyczny pod wieloma względami przypomina elementy graficzne, takie jak koła lub kwadraty, rysowane na stole montażowym w programie Flash Professional. Choć funkcjonalność tekstu statycznego nie jest tak bogata, jak w przypadku tekstu dynamicznego, język ActionScript 3.0 umożliwia odczytywanie wartości właściwości tekstu statycznego za pośrednictwem klasy StaticText. Do odczytywania wartości tekstu statycznego można też używać klasy TextSnapshot.

Dostęp do pól tekstu statycznego za pomocą klasy StaticText

Zwykle klasa flash.text.StaticText używana jest w panelu Operacje programu Flash Professional w celu interakcji z instancją tekstu statycznego umieszczoną na stole montażowym. Można również używać jej w plikach ActionScript, które wchodzą w interakcje z plikami SWF zawierającymi tekst statyczny. W obu przypadkach nie jest możliwe programowe tworzenie instancji tekstu statycznego. Tekst statyczny można tworzyć w programie Flash Professional.

Aby utworzyć odniesienie do istniejącego statycznego pola tekstowego, należy iteracyjnie przejrzeć elementy listy wyświetlania i przypisać wartość zmiennej. Na przykład:

for (var i = 0; i < this.numChildren; i++) { 
var displayitem:DisplayObject = this.getChildAt(i); 
if (displayitem instanceof StaticText) { 
trace("a static text field is item " + i + " on the display list"); 
        var myFieldLabel:StaticText = StaticText(displayitem); 
        trace("and contains the text: " + myFieldLabel.text); 
} 
}

Po utworzeniu odniesienia do statycznego pola tekstowego można używać właściwości tego pola w języku ActionScript 3.0. Poniższy kod jest dołączony do klatki na osi czasu i przyjęto w nim, że zmienna myFieldLabel zawiera odniesienie do tekstu statycznego. Dynamiczne pole tekstowe o nazwie myField jest umieszczane w położeniu określonym względem wartości x i y obiektu myFieldLabel . W tym polu dynamicznym wyświetlana jest ta sama treść, co w polu myFieldLabel .

var myField:TextField = new TextField(); 
addChild(myField); 
myField.x = myFieldLabel.x; 
myField.y = myFieldLabel.y + 20; 
myField.autoSize = TextFieldAutoSize.LEFT; 
myField.text = "and " + myFieldLabel.text

Korzystanie z klasy TextSnapshot

Do programowej obsługi istniejącej instancji tekstu statycznego można używać klasy flash.text.TextSnapshot, która umożliwia korzystanie z właściwości textSnapshot klasy flash.display.DisplayObjectContainer. Innymi słowy, należy utworzyć instancję klasy TextSnapshot na podstawie właściwości DisplayObjectContainer.textSnapshot . Następnie można stosować do tej instancji metody w celu odczytywania wartości lub zaznaczania fragmentów tekstu statycznego.

Umieśćmy na przykład na stole montażowym statyczne pole tekstowe zawierające tekst "TextSnapshot Example". Do klatki 1 na osi czasu dodajemy następujący kod ActionScript:

var mySnap:TextSnapshot = this.textSnapshot; 
var count:Number = mySnap.charCount; 
mySnap.setSelected(0, 4, true);  
mySnap.setSelected(1, 2, false);  
var myText:String = mySnap.getSelectedText(false);  
trace(myText); 

Klasa TextSnapshot jest przydatna do odczytywania tekstu ze statycznych pól tekstowych w załadowanym plik SWF, jeśli chcemy użyć tego tekstu jako wartości w innych miejscach aplikacji.