Formater un texte en ActionScript 3 (AS3).
Après avoir étudier la création d'un champ de texte dynamique, nous allons maintenant utiliser la classe TextFormat afin de mettre en forme du texte.
Cette classe va vous permettre de définir différentes propriétés de formatage :
- La police
- La taille des caractères
- La couleur
- L'alignement
- La graisse
- L'italique
- L'espacement des lettres
- Les marges à gauche et à droite
- L'interlignage
- La création d'un lien
- Le soulignement
La mise en forme classique : police, taille et couleurs
Création du formatage
On utilise le constructeur de la classe TextFormat pour créer l'objet de formatage.
-
var formatSimple:TextFormat = new TextFormat();
Les propriétés font, size et color vont nous permettre de définir la police, la taille en pixels et la couleur des caractères.
-
formatSimple.font = "Calibri";
-
formatSimple.size = 12;
-
formatSimple.color = 0x666666;
Formatage du champ de texte
La propriété defaultTextFormat de la classe TextField permet d'indiquer quel sera le formatage par défaut d'un champ de texte. Cette propriété doit être définie avant d'affecter un contenu au champ texte avec la propriété text. Si l'on modifie par la suite le contenu du champ de texte, le formatage est conservé.
-
var zoneTexte:TextField = new TextField();
-
zoneTexte.multiline = true;
-
zoneTexte.wordWrap = true;
-
zoneTexte.width = 400;
-
zoneTexte.defaultTextFormat = formatSimple;
-
zoneTexte.text = "La géométrie peut être une matière difficile à retenir mais quelques connaissances peuvent être un instrument très utile pour utiliser ActionScript.";
-
addChild(zoneTexte);
La mise en forme des blocs : marges, alignement et interlignage
Les propriétés leftMargin, rightMargin, align et leading vont nous permettre de gérer les marges gauche et droite, l'alignement et l'interlignage. Afin d'éviter toutes erreurs de saisie, on utilisera les constantes de la classe TextFormatAlign (TextFormatAlign.CENTER, TextFormatAlign.JUSTIFY...) comme valeur de la propriété align.
-
var formatTitre:TextFormat = new TextFormat();
-
formatTitre.font = "Eras Bold ITC";
-
formatTitre.size = 25;
-
formatTitre.color = 0x2B6DA4;
-
formatTitre.align = TextFormatAlign.CENTER;
-
-
var titre:TextField = new TextField();
-
titre.width = 500;
-
titre.defaultTextFormat = formatTitre;
-
titre.text = "ActionScript 3";
-
titre.y = zoneTexte.textHeight + 50;
-
addChild(titre);
-
-
var formatCadre:TextFormat = new TextFormat();
-
formatCadre.font = "Calibri";
-
formatCadre.size = 12;
-
formatCadre.color = 0x666666;
-
formatCadre.leftMargin = 50;
-
formatCadre.rightMargin = 10;
-
formatCadre.leading = 10;
-
-
var zoneTexteCadre:TextField = new TextField();
-
zoneTexteCadre.multiline = true;
-
zoneTexteCadre.wordWrap = true;
-
zoneTexteCadre.width = 400;
-
zoneTexteCadre.y = titre.y + titre.textHeight + 20;
-
zoneTexteCadre.border = true;
-
zoneTexteCadre.borderColor = 0x2B6DA4;
-
zoneTexteCadre.defaultTextFormat = formatCadre;
-
zoneTexteCadre.text = "La géométrie peut être une matière difficile à retenir mais quelques connaissances peuvent être un instrument très utile pour utiliser ActionScript.";
-
addChild(zoneTexteCadre);
La création d'un lien
Les propriétés url et underline vont nous permettre de créer un lien et de le souligner. Nous utiliserons la méthode setTextFormat() de la classe TextField pour appliquer le lien non pas sur le bloc de texte en entier mais sur un ou plusieurs mots. En effet, cette méthode accepte 2 paramètres facultatifs correspondant à l'index du 1er caractère à mettre en forme et à l'index + 1 du dernier caractère à mettre en forme.
-
var formatCadre:TextFormat = new TextFormat();
-
formatCadre.font = "Calibri";
-
formatCadre.size = 12;
-
formatCadre.color = 0x666666;
-
formatCadre.leftMargin = 50;
-
formatCadre.rightMargin = 10;
-
formatCadre.leading = 10;
-
-
var formatLien:TextFormat = new TextFormat();
-
formatLien.color = 0x0000FF;
-
formatLien.url = "http://fr.wikipedia.org/wiki/Geometrie";
-
formatLien.underline = true;
-
-
var zoneTexteCadre:TextField = new TextField();
-
zoneTexteCadre.multiline = true;
-
zoneTexteCadre.wordWrap = true;
-
zoneTexteCadre.width = 400;
-
zoneTexteCadre.y = titre.y + titre.textHeight + 20;
-
zoneTexteCadre.border = true;
-
zoneTexteCadre.borderColor = 0x2B6DA4;
-
zoneTexteCadre.defaultTextFormat = formatCadre;
-
zoneTexteCadre.text = "La géométrie peut être une matière difficile à retenir mais quelques connaissances peuvent être un instrument très utile pour utiliser ActionScript.";
-
zoneTexteCadre.setTextFormat(formatLien, 3, 12);// le format lien est appliqué sur le mot qui commence à l'index 3 et se termine à l'index 11 soir le mot géométrie
-
addChild(zoneTexteCadre);
Le script complet
Téléchargez le script complet : Formatage du texte
Je suis Antony Chauviré, développeur sur la Flash Platform.