Affichage du texte

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

Bien que les outils de programmation tels qu’Adobe Flash Builder et Flash Professional offrent plusieurs options d’affichage du texte (composants liés au texte ou outils texte), la méthode d’affichage de texte par programmation la plus simple consiste à utiliser un champ de texte.

Types de texte

Le type de texte d’un champ de texte est caractérisé par sa source :

  • Texte dynamique

    Le texte dynamique correspond au contenu chargé à partir d’une source externe, telles qu’un fichier texte ou xml, ou un service Web.

  • Saisie de texte

    Le texte saisi est le texte entré par l’utilisateur ou du texte dynamique que l’utilisateur peut modifier. Vous pouvez définir une feuille de style pour formater le texte saisi, ou utiliser la classe flash.text.TextFormat pour attribuer au champ de texte des propriétés destinées au texte saisi. Pour plus d’informations, voir Capture du texte saisi par l’utilisateur.

  • Texte statique

    Le texte statique est créé par le biais de Flash Professional uniquement. Vous ne pouvez pas créer une occurrence de texte à l’aide d’ActionScript 3.0. Vous pouvez néanmoins utiliser les classes ActionScript telles que StaticText et TextSnapshot pour manipuler une occurrence de texte statique existante. Pour plus d’informations, voir Utilisation du texte statique.

Modification du contenu d’un champ de texte

Vous pouvez définir du texte dynamique en affectant une chaîne à la propriété flash.text.TextField.text. La chaîne est directement affectée à la propriété, comme suit :

myTextField.text = "Hello World";

Vous pouvez également affecter à la propriété text une valeur issue d’une variable définie dans votre code, comme dans l’exemple suivant :

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

Vous pouvez également attribuer à la propriété text une valeur issue d’une variable distante. Le chargement de valeurs textuelles à partir de sources distantes peut se faire de trois manières :

  • Les classes flash.net.URLLoader et flash.net.URLRequest chargent des variables à partir d’emplacements locaux ou distants.

  • L’attribut FlashVars est incorporé dans la page HTML qui héberge le fichier SWF et peut contenir des valeurs destinées aux variables de texte.

  • La classe flash.net.SharedObject gère le stockage persistant des valeurs. Pour plus d’informations, voir Stockage des données locales.

Affichage du texte HTML

La propriété htmlText de la classe flash.text.TextField permet d’indiquer que la chaîne de texte contient des balises HTML de formatage du contenu. Comme le montre l’exemple suivant, vous devez affecter votre chaîne à la propriété htmlText (et non à la propriété text) pour que Flash Player ou AIR puisse afficher le texte sous forme HTML :

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

Pour la propriété htmlText, Flash Player et AIR prennent en charge un sous-ensemble de balises et d’entités HTML. La description de propriété flash.text.TextField.htmlText dans le manuel Guide de référence ActionScript 3.0 pour Flash Professional fournit des informations détaillées sur les balises et entités HTML prises en charge.

Une fois que vous avez spécifié votre contenu à l’aide de la propriété htmlText, vous pouvez utiliser des feuilles de style ou la balise textformat pour gérer le formatage. Pour plus d’informations, voir Mise en forme du texte.

Utilisation d’images dans des champs de texte

L’affichage du contenu sous forme de texte HTML présente un autre avantage : vous pouvez inclure des images dans le champ de texte. Il est possible de référencer une image, locale ou distante, grâce à la balise img et de la faire apparaître dans le champ de texte associé.

L’exemple suivant crée un champ de texte appelé myTextBox et incorpore au texte une image JPG représentant un œil, image stockée dans le même répertoire que le fichier 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; 
        } 
    } 
}

La balise img prend en charge les fichiers JPEG, GIF, PNG et SWF.

Défilement du texte dans un champ de texte

Dans bien des cas, votre texte peut s’avérer plus long que le champ de texte qui le contient. Il se peut également qu’un champ de saisie permette à l’utilisateur de saisir plus de caractères qu’il ne peut en afficher en une seule fois. Les propriétés de défilement de la classe flash.text.TextField permettent de gérer du contenu long, que ce soit verticalement ou horizontalement.

Ces propriétés sont les suivantes : TextField.scrollV, TextField.scrollH, maxScrollV et maxScrollH. Utilisez-les pour répondre à des événements tels qu’un clic de souris ou une pression sur une touche.

L’exemple ci-après crée un champ de texte de taille fixe et contenant plus de texte que le champ ne peut afficher en une seule fois. Lorsque l’utilisateur clique sur le champ de texte, le texte défile verticalement.

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