Passer d'un textFormat à l'autre dans FlashMX

ccciolll

Membre expert
Club iGen
Bonjour, partant de quelques vieux messages glanés sur un forum flash aujourd'hui inactif, j'ai commencé à élaborer un actionscript.

Je suis sur FlashMX2004 / osX10.3

Voilà, je pars sur un exemple précis ce sera plus parlant.

Admettons que l'utilisateur va rentrer des informations (son numéro de tél et de fax dans l'exemple) et que je souhaite avoir au final un résultat de ce type (ce n'est qu'un exemple pour bien comprendre le principe)



Tel 00 00 00 00 00
Fax 00 00 00 00 00​

Comme vous le voyez, il y a du gras à l'intérieur, le texte doit être dans une typo bien précise, une couleur bien précise, ferré à droite, et avec toutes les glyphes nécessaires intégrées dans le bloc (c'est nécessaire dans flash, surtout que j'utilise des fontes assez rares dans certains cas)

Bon, pour l'instant, l'actionscript que j'ai réussi à faire ça donne ceci

// définir les textFormat (genre de feuille de style)
var Gras:TextFormat = new TextFormat();
Gras.font = "HelveticaRegular";
var Maig:TextFormat = new TextFormat();
Maig.font = "HelveticaLight";

//créer un bloc texte
this.createTextField("MonBloc", this.getNextHighestDepth(), 0, 0, 100, 100);
my_txt.multiline = false ;
my_txt.wordWrap = true ;

// remplir le bloc texte avec les éléments fixes et les éléments renseignés par l'utilisateur
// et définir des points de coupe "var" entre chaque élément
MonBloc.text = "Tel " ;
var TT:Number = MonBloc.length;
MonBloc.text += c_telephone;
var TN:Number = MonBloc.length;
MonBloc.text += "\rFax " ;
var FF:Number = MonBloc.length;
MonBloc.text += c_fax;
var FN:Number = MonBloc.length;

// appliquer les textFormat entre chaque point de coupe
MonBloc.setTextFormat(0, TT, Gras);
MonBloc.setTextFormat(TT, TN, Maig);
MonBloc.setTextFormat(TN, FF, Gras);
MonBloc.setTextFormat(FF, FN, Maig);


Et ça marche, il intègre bien les éléments saisis en mettant du gras sur les mots "Tel" et "Fax".
Si vous pensiez dire qu'il suffisait d'appliquer du gras sur ces mots sans pour autant passer par la font, je réponds non, car je souhaite utiliser la font grasse et non pas graisser la font (c'est une nuance très importante).
Mais ce qui m'ennuie, c'est que je suis obligé d'utiliser l'opératuer this.createTextField alors que ça ne m'arrange pas du tout.
J'ai essayé de créer un bloc texte dynamique avec dans le champ Var le nom de variable employé dans l'actionscript ci-dessus (MonBloc), mais ça ne marche pas, il ne se remplit pas. Ça ne marche que quand j'utilise l'opérateur this.createTextField. Peut-être qu'il me manque un truc pour qu'il accepte de remplir (MonBloc.text) un bloc déjà présent sans le créer.

Pourquoi je veux utiliser un bloc de texte déjà défini, me demanderez-vous.
Comme vous l'avez lu, dans mes textFormat, je ne défini que la police, il faudrait donc que je définisse aussi dedans le corps (.size =), la couleur du texte (.color =), le fait qu'il est ferré à droite (comment faire ?), les plages de glyphes à importer (comment faire ?), etc.
Or cela rend l'opération fastidieuse. Imaginons que j'ai un bloc tel et fax avec le texte rouge à 6 pts à gauche, puis un bloc nom, prénom avec le texte gris à 8 pts centré et enfin un bloc adresse avec les texte rouge à 9 points à droite… Chacun comportant la font Regular et Light ça m'oblige à définir 6 textFormat trés détaillé, or je voudrais pourvoir appliquer cela dans un bloc texte déjà créé, dans lequel je défini la couleur du texte, son corps, son alignement, les glyphes et tout ça. Dans ce cas, je pourrais simplement créer 2 textFOrmat (Light et Regular) et les appliquer pour faire changer la font en gardant les réglages (couleur, corps, alignement, etc.) du bloc.