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