Bonjour à tous,
Le projet sur lequel je travaille requiert de donner la possibilité à l'utilisateur d'entrer un texte, puis le transformer (couleur, taille rotation...).
Or, lors d'une modification, le texte entré disparais tout simplement.
J'ai lu que l'on devais "embeder" les polices utilisées afin d'éviter ce désagrément. On dirais que j'ai fait quelque chose d'incorrect car cela ne fonctionne pas.
Lorsque l'utilisateur "crée" un texte, ce dernier est un composant flex de type label contenu dans un canvas.
Les polices disponibles sont stockées dans une libraire indépendante.
La définition d'une police est définie de la façon suivante au sein de la librairie FontsLibrary :
n.b : Pour aller vite, j'ai copié-collé des polices du répertoire fonts de windows dans mon répertoire assets.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 [Bindable] public class FontsLibrary { /** * The verdana font from the assets library * */ [Embed(source="assets/verdana.TTF" , fontName="LCVerdana" , mimeType='application/x-font')] public static const LCVerdana:Class; ...
Voici le constructeur de ma classe utilisée (héritant de canvas) :
la commande this.elementText.setStyle("fontFamily", FontsLibrary.LCVerdana) ne fonctionne pas, à la place d'une police verdana, j'obtiens une police avec empattement du genre de times new roman.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 public function LCTextElementField( AText : String = "" , AColor : int = -1 , AHeight : int = -1) { super(); this.elementText = new Label(); if (AText == "" ) { this.elementText.text = "Lorem ipsum dolor sit amet"; } else { this.elementText.text = StringUtil.trim(AText) ; } if (AColor != -1) { this.elementText.setStyle("color",AColor); } if (AHeight != -1) { this.elementText.setStyle("fontSize",AHeight); } else { this.elementText.setStyle("fontSize",30); } this.elementText.setStyle("embedFonts", true); this.elementText.setStyle("fontFamily", FontsLibrary.LCVerdana); this.addChild(this.elementText); }
L'application de la couleur et de la taille déterminée fonctionne.
Lors du changement d'une de ces 2 valeurs ( via this.elementText.setStyle() ) la police disparais.
La rotation fait elle aussi disparaitre le texte (sauf si l'on reviens à la position initiale).
A mon avis, l'essentiel de mon problème proviens du fait que la police n'est pas "embedée", rendant impossible toute modification.
Vos lumières sur ce sujet m'aideraient énormément.
Partager