Utilisation du texte statique

Flash Player 9 et les versions ultérieures, Adobe AIR 1.0 et les versions ultérieures

Le texte statique est créé dans Flash Professional uniquement. Il est impossible d’instancier du texte statique en ActionScript. Le texte statique est utile si le contenu textuel est court et ne doit pas changer (contrairement au texte dynamique). Vous pouvez assimiler le texte statique à un élément graphique comparable à un cercle ou un carré dessiné sur la Scène dans Flash Professional. Bien que le texte statique offre moins de possibilités que le texte dynamique, ActionScript 3.0 permet de lire les valeurs des propriétés du texte statique à l’aide de la classe StaticText. En outre, vous pouvez utiliser la classe TextSnapshot pour extraire des valeurs du texte statique.

Accès aux champs de texte statique à l’aide de la classe StaticText

Vous utilisez généralement la classe flash.text.StaticText dans le panneau Actions de Flash Professional pour agir sur une occurrence de texte statique placée sur la scène. Vous pouvez également travailler dans des fichiers ActionScript qui interagissent avec le fichier SWF contenant le texte statique. Dans les deux cas, il est impossible de créer par code une occurrence de texte statique. Le texte statique est créé dans Flash Professional.

Pour créer une référence à un champ de texte statique existant, vous pouvez effectuer une itération sur les éléments de la liste d’affichage et affecter une variable. Exemple :

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

Lorsque vous disposez d’une référence à un champ de texte statique, vous pouvez utiliser les propriétés de ce champ dans ActionScript 3.0. Le code suivant est associé à une image du scénario et suppose qu’une variable appelée myFieldLabel est affectée à une référence à un champ de texte statique. Un champ de texte dynamique myField est positionné relativement aux valeurs x et y de myFieldLabel et affiche à nouveau la valeur de 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

Utilisation de la classe TextSnapshot

Pour travailler par programmation avec une occurrence de texte statique existante, utilisez la classe flash.text.TextSnapshot pour modifier la propriété textSnapshot d’un objet flash.display.DisplayObjectContainer. En d’autres termes, créez une occurrence de TextSnapshot à partir de la propriété DisplayObjectContainer.textSnapshot. Vous pouvez alors appliquer des méthodes à cette occurrence afin d’extraire des valeurs ou de sélectionner des portions du texte statique.

Par exemple, placez un champ de texte statique contenant le texte « TextSnapshot Example » sur la scène. Ajoutez le code ActionScript suivant à l’image 1 du scénario :

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 est utile pour extraire le texte des champs de texte statique dans un fichier SWF chargé, au cas où vous souhaiteriez utiliser ce texte comme valeur dans une autre zone de l’application.