changement de Font sur un SimpleTextInput

0 views
Skip to first unread message

ths otra

unread,
Jun 17, 2009, 10:04:22 AM6/17/09
to vegasos
Salut les Vegas !

Toujours dans mes bricolages avec Vegas  (que je trouve toujours aussi passionnant), cette fois, j' essaie d'offir la possibilité pour les visiteurs de mon site d'écrire dans un SimpleTextInput dans le maximum de langue possible ... a ce titre, je charge mes Font ( dejavu, arial) avec la class FontLoader et tente de les passer à une class qui crée mon SimpleTextInput.

Voici la methode changeFont qui est invoquer par un comboxBox qui liste les langues disponibles:

public function changeFont(police:String):void
{
    champTxt.defaultTextFormat = new defaultTextFormat(police, 13 , 0xFFFFFF ) ;   
// champTxt.style = new SimpleTextInputStyle( null , {police,color:0x444444 } ) ;
}


Ma question est ... comment passer cette valeur au SimpleTextInput ...?  les exemples sont avec le  CoreTextField( mais ça n'a pas l'air de fonctionner de la même manière ?

Cette fois, s'il y a une démo ... je ne l'ai pas trouvée ... !!!


Bonne fin de journée à tout le monde !


// je suis preneur de conseils, de retour d'expériences, au sujet de l'utilisation du chinois, et des milliards d'autres langues dans des textField ou textInput !!!

eKameleon

unread,
Jun 17, 2009, 10:23:18 AM6/17/09
to VEGAS - ECMASCript & ActionScript OpenSource framework
Hello :)

Méfiance pour chinois, arabe etc.. pour le moment je ne me suis pas
encore penché (par faut de temps) sur le nouvel API de texte du FP10
et par contre je compte vraiment dans un avenir proche mettre en place
tous les outils qu'il faut là dessus.

Par contre rien ne t'empêche d'anticiper pour tes besoins ce problème
et de commencer à regarder du côté des classes du FP10 du package
flash.text.engine

Avec ce package tu pourras faire du texte inversé (mode miroir pour
arabe etc), texte vertical, texte multicolonnes, etc.

Bon sinon pour ton problème... sans avoir fais de test rapide .. tu as
donc le component SimpleTextInput et la classe SimpleTextInputStyle
pour gérer son style (regarde le contenu de cette classe)

Dans la classe SimpleTextInputStyle tu as bien vu qu'il y a la
propriété defaultTextFormat .. donc pour l'appliquer tu peux
simplement taper :

myComponent.setStyle( "defaultTextFormat" , new defaultTextFormat
(police, 13 , 0xFFFFFF ) ) ;

Cela devrait fonctionner, mais surtout faut que le TextField dans ton
composant soit en embedFonts = true .. du coup en regardant rapido ma
classe je me rends compte que j'ai pas mis d'accés direct vers cette
propriété donc je vais l'ajouter car franchement ce genre de problème
peut vite arriver ...

....

Aussitôt dit.. aussitôt fait :
http://code.google.com/p/lun-as/issues/detail?id=33

Tu peux mettre à jour VEGAS et LunAS du coup, et tester en mettant
myComponent.embedFonts = true ? Tu me diras si cela fonctionne.

Dans tous les cas faut bien comprendre que dans le composant tu as une
référence "textfield" qui te renvoi la référence du champ de texte
(TextField) dans le composant. Du coup tu peux agir dessus directement
si il faut en fonction de tes besoins.

EKA+ :)

ths otra

unread,
Jun 19, 2009, 6:26:20 AM6/19/09
to veg...@googlegroups.com
Salut !

Merci pour toutes ces réponses et explications. Je prenais le temps de te répondre pour être bien-sûr de ce que j'allais te raconter...surtout chercher une solution en fouillant... mais là, je ne vois vraiment pas comment ça marche ...

Bon, je fais bref pour expliquer mes conneries:

Dans ma class, j'essaie de faire un truc comme sa :

public var champTxt:SimpleTextInput;
//public var style:SimpleTextInputStyle;

champTxt= new SimpleTextInput(titreChamp);

champTxt.embedFonts = true;
champTxt.setStyle( "defaultTextFormat" , new defaultTextFormat ("arial", 13 , 0xFFFFFF ) ) ;

// 1180: Appel à une méthode qui ne semble pas définie, defaultTextFormat.


ou bien encore:

champTxt= new SimpleTextInput(titreChamp);

champTxt.embedFonts = true;

style.defaultTextFormat= new defaultTextFormat ("arial", 13 , 0xFFFFFF )
champTxt.setStyle(style)
// 1180: Appel à une méthode qui ne semble pas définie, defaultTextFormat.


Le SimpleTextInputStyle a bien un TextFormat mais je ne vois pas comment l'atteindre pour le modififer ... cette classe étend "AbstractStyle "  ... qui a un setStyle(...args:Array) // This method is invoked to change a style attribute in this IStyle object with a generic object or a key(String)/value pair of arguments.

bref, je suis paumé ! Si quelqu'un avait une ou deux pistes ... ce serait chouette !



Bonne ap' !


thomas

ekameleon

unread,
Jun 19, 2009, 6:40:44 AM6/19/09
to veg...@googlegroups.com
Hello :)

Autant pour moi dans mon copier/coller au dessus ... mais tu aurais du te rendre compte que la class "defaultTextFormat" n'existe pas

Utilise plutôt TextFormat :

input.setStyle( "defaultTextFormat" , new TextFormat ("arial", 13 , 0xFFFFFF ) ) ;

PS : regarde un peu la doc ActionScript dans le package flash.text.. cela peut t'aider à mieux comprendre ce que tu fais :) Si tu cherches à utiliser mon framework sans connaitre ces bases là tu vas avoir des gros soucis par la suite :)

EKA+ :)

thomas

unread,
Jun 19, 2009, 7:00:45 AM6/19/09
to veg...@googlegroups.com
hello,


Je vais essayer comme ça tout à l'heure ! Merci...
En fait, c'est plutôt que je ne me dis que tu connais l'actionscript sur
le bout des doigts donc, quand je me retrouve avec quelque chose de ...
curieux, je me dis que c'est normal et que tu as certainement dû
bricoler un machin pour optimiser un truc ;-)

Je vais tacher d'être plus attentif !


ekameleon a écrit :


> Hello :)
>
> Autant pour moi dans mon copier/coller au dessus ... mais tu aurais du
> te rendre compte que la class "defaultTextFormat" n'existe pas
>
> Utilise plutôt TextFormat :
>
> input.setStyle( "defaultTextFormat" , new TextFormat ("arial", 13 ,
> 0xFFFFFF ) ) ;
>
> PS : regarde un peu la doc ActionScript dans le package flash.text..
> cela peut t'aider à mieux comprendre ce que tu fais :) Si tu cherches
> à utiliser mon framework sans connaitre ces bases là tu vas avoir des
> gros soucis par la suite :)
>
> EKA+ :)
>
> Le 19 juin 2009 12:26, ths otra <ths....@gmail.com

> <mailto:ths....@gmail.com>> a écrit :

> <mailto:ekam...@gmail.com>> a écrit :

ekameleon

unread,
Jun 19, 2009, 7:11:53 AM6/19/09
to veg...@googlegroups.com
Hello :)

nul n'est parfait et pour ma part je suis loin de l'être lol

J'ai pas réfléchi en faisant le copier/coller de ton code ;) Faut bien prendre le temps de comprendre le code dans tous les cas ;)

PS : tu utilises Flash pour coder ? je te conseille vivement d'utiliser FDT... ce genre de problème n'existe plus dans FDT car il te dit tout de suite que l'objet n'existe pas :)

EKA+ :)

ths otra

unread,
Jun 19, 2009, 2:39:37 PM6/19/09
to veg...@googlegroups.com
Re-salut !

Tu as bien raison, je vais surement essayer de changer d'outils. Mais FDT n'est pas libre, non ? y'a quoi comme ide GPL  équivalent  ? Vous utilisez quoi vous et pourquoi ?






Bon sinon, au cas ou, voici mes avancées et mes galères ...

j'ai deux classes, l'une qui me permet de créer des CoretextField, l'autre des SimpleTextInput, dans chacun d'elle, j'ai une méthode pour changer ma FONT: changeFont(nom_de_la_font:String) // == "dejavu"


Dans la classe coretextField, elle fonctionne comme ça:

trace(Font.enumerateFonts(false));         // renvoie [object arial],[object dejavu]
champTxt.embedFonts            =    true; // rien ne s'affiche sauf à false ou j'ai du TIMES !
champTxt.defaultTextFormat    =    new TextFormat(police, 11, 0x000000, false, null, null, null, null, "left");


Dans la classe SimpleTextInput, j'ai:
Dans la classe coretextField, elle fonctionne comme ça:

trace(Font.enumerateFonts(false));          // renvoie [object arial],[object dejavu]
champTxt.embedFonts            =    true; // rien ne s'affiche sauf avec false et j'ai bien du DEJAVU !
champTxt.setStyle( "defaultTextFormat" , new TextFormat ("dejavu") ) ;


Je capte plus rien, alors bon .... toutes les pistes sont bonnes  ! J'arrête cinq minutes ...



bonne soirée !

ekameleon

unread,
Jun 19, 2009, 3:06:49 PM6/19/09
to veg...@googlegroups.com
Hello :)


Tu as bien raison, je vais surement essayer de changer d'outils. Mais FDT n'est pas libre, non ? y'a quoi comme ide GPL  équivalent  ? Vous utilisez quoi vous et pourquoi ?


FDT est payant et franchement à un moment donné faut savoir ce que l'on veut ;) FDT est pour moi ce qui se fait de mieux pour coder en AS3 et il y a aucune raison de ne pas s'acheter au moins cette licence.

Sinon au passage tu peux l'installer en version 30 jours dans Eclipse et si tu es assez malin tu verras que tu peux l'utiliser un peu plus longtemps... mais par contre une fois que tu l'auras bien utilisé tu verras qu'il est impossible de faire sans ensuite. 

FDT est un outil indispensable pour un code propre et un confort optimal.
 
Bon sinon, au cas ou, voici mes avancées et mes galères ...

j'ai deux classes, l'une qui me permet de créer des CoretextField, l'autre des SimpleTextInput, dans chacun d'elle, j'ai une méthode pour changer ma FONT: changeFont(nom_de_la_font:String) // == "dejavu"


Dans la classe coretextField, elle fonctionne comme ça:

trace(Font.enumerateFonts(false));         // renvoie [object arial],[object dejavu]
champTxt.embedFonts            =    true; // rien ne s'affiche sauf à false ou j'ai du TIMES !
champTxt.defaultTextFormat    =    new TextFormat(police, 11, 0x000000, false, null, null, null, null, "left");


Dans la classe SimpleTextInput, j'ai:
Dans la classe coretextField, elle fonctionne comme ça:

trace(Font.enumerateFonts(false));          // renvoie [object arial],[object dejavu]
champTxt.embedFonts            =    true; // rien ne s'affiche sauf avec false et j'ai bien du DEJAVU !
champTxt.setStyle( "defaultTextFormat" , new TextFormat ("dejavu") ) ;


Je capte plus rien, alors bon .... toutes les pistes sont bonnes  ! J'arrête cinq minutes ...


C'est quoi "police" au passage ?? N'oublie pas que dans un TextFormat ou une StyleSheet faut déclarer la font avec la valeur fontName de l'objet font... 

PS : en cas de gros gros soucis, n'hésite pas à isoler ton problème dans un petit zip avec juste ce qu'il faut et joins le petit exemple pour voir ce que tu fais exactement.

EKA+ :)
Reply all
Reply to author
Forward
0 new messages