ADAPTER AUTOMATIQUEMENT LA TAILLE DE POLICE SELON LES DIMENSIONS D'UN CHAMP TEXT

pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 - 19 juin 2009 à 15:40
ths_otra Messages postés 5 Date d'inscription lundi 21 juin 2004 Statut Membre Dernière intervention 29 juin 2009 - 29 juin 2009 à 12:12
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/50202-adapter-automatiquement-la-taille-de-police-selon-les-dimensions-d-un-champ-texte-textfield

ths_otra Messages postés 5 Date d'inscription lundi 21 juin 2004 Statut Membre Dernière intervention 29 juin 2009
29 juin 2009 à 12:12
suggestion, mais pas encore tout à fait au point:

var largeur :Number = stage.stageWidth ;
var hauteur :Number= stage.stageHeight ;

var field :TextField = new TextField();
field.defaultTextFormat = new TextFormat("_sans",10,0xFF6600) ;
field.autoSize= "left" ;
field.text = "debut_ _fin" ;
field.wordWrap=true
field.height=200
field.width=200

field.antiAliasType = "advanced" ;
trace( field.width ) ;// Affiche 324
addChild(field) ;

var xScale :Number = largeur/(field.textWidth) ;
var yScale :Number = hauteur/(field.textHeight);
field.scaleX = xScale
field.scaleY = yScale ;

field.y= (hauteur-field.height)/2 ;
field.x= (largeur-field.width)/2 ;
trace( field.width ) ;
ths_otra Messages postés 5 Date d'inscription lundi 21 juin 2004 Statut Membre Dernière intervention 29 juin 2009
29 juin 2009 à 12:01
Salut, pas mal la correction de source ... par contre j'essaie de l'adapter à un champ multi-ligne (wordwrap=true ) et c'est pas évident. mission: Ecrire le texte le plus gros possible, centré sur le stage et multi-ligne !
top30 Messages postés 1158 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 6 août 2010
26 juin 2009 à 20:27
Ben t'es pas doué !!!!

var pageWidth :Number = 500 ;
var pageHeight :Number= 200 ; // NOUVEAU !!!

var field :TextField = new TextField();
field.defaultTextFormat = new TextFormat("_sans",24,0xFF6600) ;
field.autoSize= "left" ;
field.text = "TOP30-HopeMultimedias.com" ;
field.antiAliasType = "advanced" ;
trace( field.width ) ;// Affiche 324
addChild(field) ;

var scale :Number = pageWidth/field.width ;field.scaleX field.scaleY scale ;

field.y= (pageHeight-field.height)/2 ; // ET VOILA !!!!
trace( field.width ) ;// Affiche 500.15
top30 Messages postés 1158 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 6 août 2010
22 juin 2009 à 20:22
Cherche un peu non ?
bat_2504 Messages postés 3 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 14 janvier 2006
22 juin 2009 à 11:52
A ouai en effet c'est plus simple :p . Sinon vous auriez une idée de comment procéder pour que le texte soit aussi centré verticalement ?
top30 Messages postés 1158 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 6 août 2010
19 juin 2009 à 19:46
Exace, je l'avais oublié car non testé.

Une solution:
public function Test()
:void {
var pageWidth :Number = 500 ;

var field :TextField = new TextField();
field.defaultTextFormat = new TextFormat("_sans",24,0xFF6600) ;
field.autoSize= "left" ;
field.text = "TOP30-HopeMultimedias.com" ;
field.antiAliasType = "advanced" ;
trace( field.width ) ;// Affiche 324
addChild(field) ;

var scale :Number = pageWidth/field.width ;field.scaleX field.scaleY scale ;
trace( field.width ) ;// Affiche 500.15
}
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
19 juin 2009 à 19:12
Heu, non, Top ... le changement de width d'un textField ne modifies pas son Scale ..

Il faut justement trouver une petite formule permettant de définir le scaleX en fonction de son width actuel (avec autoSize, bien entendu).

Peg'
top30 Messages postés 1158 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 6 août 2010
19 juin 2009 à 18:23
var largueurVoulue :Number= 100 ;
champTexte.width= largeurVoulue ;
champTexte.scaleY= champTexte.scaleX ;
.. et voila !

Beaucoup de temps, beaucoup de code, beaucoup de ressource pour quelque chose simple à résoudre si l'on prend le temps de refléchir au problème.
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
19 juin 2009 à 15:40
Question idiote : pourquoi ne tout simplement pas modifier le scale de ton textField en fonction de ta taille en pixels ?

Comme cela tu n'aurais pas à modifier le textFormat ...

Peg'
Rejoignez-nous