IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flex Discussion :

rotation de labels , chargement de polices


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de ouaqa
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2009
    Messages : 95
    Par défaut rotation de labels , chargement de polices
    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 :
    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;
     
    ...
    n.b : Pour aller vite, j'ai copié-collé des polices du répertoire fonts de windows dans mon répertoire assets.

    Voici le constructeur de ma classe utilisée (héritant de canvas) :
    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);		
    }
    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.

    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.

  2. #2
    Membre confirmé Avatar de ouaqa
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2009
    Messages : 95
    Par défaut
    Je continue à essayer de résoudre mon problème.
    j'utilise maintenant un objet de type UITextField pour contenir mon texte et un objet UITextFormat pour définir mon style.

    la définition de la librairie de police n'a pas changée.
    voici maintenant le constructeur de mon objet :

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    public function LCTextElementField( AText : String = "" , AColor : int = -1 , ASize : int = -1)
    {
    	super();
     
    	var afont : Font = new FontsLibrary.RAVIE();
     
    	this.elementText = new UITextField();	
    	textFormat = new UITextFormat(systemManager);
     
     
    	if (AColor != -1)
    	{ this.textFormat.color = AColor ; }
     
    	if (ASize != -1)
    	{ this.textFormat.size = ASize ; }
    	else
    	{ this.textFormat.size = 30 ; }
     
    	this.textFormat.font = afont.fontName;
     
    	this.elementText.defaultTextFormat = textFormat ;
     
    	this.elementText.embedFonts = true;
    	this.elementText.autoSize = TextFieldAutoSize.LEFT; 
    	this.elementText.antiAliasType = AntiAliasType.ADVANCED ;
     
    	if (AText == "" )
    	{ this.elementText.text = "Lorem ipsum dolor sit amet"; }
    	else
    	{ this.elementText.text = AText ; }
     
     
    	this.addChild(this.elementText);		
    	this.autoLayout = true ;
    }
    Ces modifications ne modifient en rien le résultat. Je définis une police Ravie afin de voir rapidement si mon texte a bien reçu les changements. or ce n'est pas le cas.
    J'ai lu dans un article (qui concernais le flash player 9a) qu'un bug obligeait le développeur à nommer ses polices avec leur veritable nom mais cela ne résout rien.

    Je commence à être à court d'idées. Toute suggestion est la bienvenue.

  3. #3
    Membre confirmé Avatar de ouaqa
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2009
    Messages : 95
    Par défaut
    Problème résolu en utilisant des objet TextField et TextFormat.
    Attention, un Textfield doit être contenu dans un compo de type UIComponent avant d'être ajouté au canvas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    this.elementText = new TextField();	
    textFormat = new TextFormat();
    ...
    ...
    var conteneur : UIComponent = new UIComponent();
    conteneur.addChild(this.elementText);
    this.addChild(conteneur);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Label intéligent : taille police
    Par kitue dans le forum SWT/JFace
    Réponses: 1
    Dernier message: 16/05/2008, 19h16
  2. [FPDF] Problème de chargement de police
    Par Trebor_ dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 20/03/2008, 13h27
  3. Chargement de police externe
    Par pit_30 dans le forum Flash
    Réponses: 1
    Dernier message: 10/11/2006, 22h44
  4. [MFC] label avec une police qui s'ajuste
    Par romeo9423 dans le forum MFC
    Réponses: 7
    Dernier message: 15/03/2005, 14h27
  5. Problème de chargement de police de caractères
    Par Laurent Gomila dans le forum Windows
    Réponses: 4
    Dernier message: 19/08/2004, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo