Operazioni con il testo statico

Flash Player 9 e versioni successive, Adobe AIR 1.0 e versioni successive

Il testo statico viene creato solo all'interno di Flash Professional. Non è possibile creare un'istanza di un testo statico a livello di codice mediante ActionScript. Il testo statico è utile se il testo è breve e non è destinato a essere modificato (a differenza del testo dinamico). Il testo statico è simile a un elemento grafico, ad esempio un cerchio o un quadrato, disegnato sullo stage di Flash Professional. Mentre il testo statico è più limitato di quello dinamico, ActionScript 3.0 consente di leggere i valori delle proprietà del testo statico mediante la classe StaticText. È inoltre possibile utilizzare la classe TextSnapshot per leggere i valori del testo statico.

Accesso ai campi di testo statico con la classe StaticText

Di solito, si utilizza la classe flash.text.StaticText nel pannello Azioni di Flash Professional per interagire con un'istanza di testo statico posizionata sullo stage. È anche possibile lavorare in file ActionScript che interagiscono con un file SWF che contiene testo statico. In entrambi i casi, non è possibile creare un'istanza a livello di codice di un testo statico. Il testo statico viene creato in Flash Professional.

Per creare un riferimento a un campo di testo statico esistente, eseguire un'iterazione su elementi nell'elenco di visualizzazione e assegnare una variabile. Ad esempio:

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

Quando è disponibile il riferimento a un campo di testo statico, è possibile utilizzare le proprietà di tale campo in ActionScript 3.0. Il codice seguente è associato a un fotogramma nella linea temporale e presuppone che una variabile denominata myFieldLabel sia assegnata a un riferimento di testo statico. Un campo di testo dinamico di nome myField viene posizionato in relazione ai valori x e y di myFieldLabel e visualizza di nuovo il valore di 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

Uso della classe TextSnapshot

Se desiderate lavorare a livello di codice con un'istanza di testo statica esistente, potete utilizzare la classe flash.text.TextSnapshot per gestire la proprietà textSnapshot di un oggetto flash.display.DisplayObjectContainer. In altre parole, create un'istanza TextSnapshot dalla proprietà DisplayObjectContainer.textSnapshot. Applicate quindi i metodi necessari a tale istanza per recuperare i valori desiderati o selezionare parti del testo statico.

Ad esempio, posizionate sullo stage un campo di testo statico contenente il testo "TextSnapshot Example". Aggiungete il codice ActionScript seguente al fotogramma 1 della linea temporale:

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

La classe TextSnapshot è utile per ottenere il testo dai campi di testo statici di un file SWF caricato, nel caso si desideri utilizzare il testo come valore in un'altra parte dell'applicazione.