begin process at 2010 03 22 01:19:21
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

ActionScripts

 > ADAPTER AUTOMATIQUEMENT LA TAILLE DE POLICE SELON LES DIMENSIONS D'UN CHAMP TEXTE (TEXTFIELD)

ADAPTER AUTOMATIQUEMENT LA TAILLE DE POLICE SELON LES DIMENSIONS D'UN CHAMP TEXTE (TEXTFIELD)


 Information sur la source

Note :
Aucune note
Catégorie :ActionScripts Classé sous :textfield, police, dynamique, champ, taille Niveau :Débutant Date de création :19/06/2009 Date de mise à jour :19/06/2009 14:02:33 Vu :1 878

Auteur : bat_2504

Ecrire un message privé
Site perso
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

Cette fonction permet de créer un champ texte dynamique en renseignant les coordonnées, ainsi que le texte à y insérer : le plus c'est que le texte prend automatiquement la taille la plus grosse pour la taille du champ donnée :)

Source

  • function creerChamp(nomTxt,texte,profondeur,largeur,hauteur,coY,coX){
  • //Initialisation taille police
  • police = 1;
  • //Création du champ
  • this.createTextField(''+nomTxt+'', profondeur, coY, coX, 1, 1);
  • //On lui attribue quelques propriétés
  • //trace(this[nomTxt]);
  • this[nomTxt].multiline = false;
  • this[nomTxt].wordWrap = false;
  • this[nomTxt].border = false;
  • this[nomTxt].selectable = false;
  • //On crée un format
  • monFormat = new TextFormat();
  • monFormat.size = police;
  • monFormat.color = 0x000000;
  • monFormat.font = 'arial';
  • monFormat.align = 'center';
  • //On remplis le champ de hauteur 1px et largeur 1px par le texte en police taille 1
  • this[nomTxt].text = texte;
  • this[nomTxt].setTextFormat(monFormat);
  • //On met la variable de condition a false
  • ok = false;
  • //La boucle augmente la taille de la police tant que la hauteur et la largeur ne sont pas dépassées
  • while(this[nomTxt]._width<largeur and this[nomTxt]._height<hauteur and ok != true){
  • // On save a chaque tour les largeur et hauteur du texte
  • saveH = this[nomTxt].textHeight;
  • saveL = this[nomTxt].textWidth;
  • //On incrémente de 1 la taille de police
  • monFormat.size = police++;
  • //On applique la police = le texte s'agrandit
  • this[nomTxt].setTextFormat(monFormat);
  • //On donne au champ texte les dimensions du texte
  • this[nomTxt]._width = this[nomTxt].textWidth;
  • this[nomTxt]._height = this[nomTxt].textHeight;
  • //A la fin de chaque tour on vérifie si les valeurs max ne sont pas dépassées
  • if(this[nomTxt]._width >= largeur){
  • //Si oui on reviens a la l'état du dernier passage et on stop la boucle
  • //(on enleve -3 et non -1 a la police pour une marge d'erreur)
  • this[nomTxt]._width = saveL;
  • monFormat.size = police-3;
  • this[nomTxt].setTextFormat(monFormat);
  • ok = true
  • }
  • }
  • //On remet bien les valeurs exacts (car parfois erreur de quelques px)
  • this[nomTxt]._width = largeur;
  • this[nomTxt]._height = hauteur;
  • }
  • //creerChamp(Nom du champ texte, texte a mettre, profondeur, largeur du champ, hauteur du champ, coo Y, coo X)
  • creerChamp('nom','yeahh',0, 250, 80, 0, 170);
  • creerChamp('nom2','yeeeeeeeeeeaaahh',10, 250, 80, 0, 110);
function creerChamp(nomTxt,texte,profondeur,largeur,hauteur,coY,coX){


//Initialisation taille police
police = 1;

//Création du champ
this.createTextField(''+nomTxt+'', profondeur, coY, coX, 1, 1);

//On lui attribue quelques propriétés
//trace(this[nomTxt]);
this[nomTxt].multiline = false;
this[nomTxt].wordWrap = false;
this[nomTxt].border = false;
this[nomTxt].selectable = false;

//On crée un format
monFormat = new TextFormat();
monFormat.size = police;
monFormat.color = 0x000000;
monFormat.font = 'arial';
monFormat.align = 'center';
//On remplis le champ de hauteur 1px et largeur 1px par le texte en police taille 1
this[nomTxt].text = texte;
this[nomTxt].setTextFormat(monFormat);

//On met la variable de condition a false
ok = false;

//La boucle augmente la taille de la police tant que la hauteur et la largeur ne sont pas dépassées
while(this[nomTxt]._width<largeur and this[nomTxt]._height<hauteur and ok != true){
	
	// On save a chaque tour les largeur et hauteur du texte
	saveH = this[nomTxt].textHeight;
	saveL = this[nomTxt].textWidth;
	
	//On incrémente de 1 la taille de police
	monFormat.size = police++;
	
	//On applique la police = le texte s'agrandit
	this[nomTxt].setTextFormat(monFormat);
	
	//On donne au champ texte les dimensions du texte
	this[nomTxt]._width = this[nomTxt].textWidth;
	this[nomTxt]._height = this[nomTxt].textHeight;
		
	//A la fin de chaque tour on vérifie si les valeurs max ne sont pas dépassées
	if(this[nomTxt]._width >= largeur){
		
		//Si oui on reviens a la l'état du dernier passage et on stop la boucle 
		//(on enleve -3 et non -1 a la police pour une marge d'erreur)
		
		this[nomTxt]._width = saveL;
		monFormat.size = police-3;
		this[nomTxt].setTextFormat(monFormat);
		ok = true
	}


}


//On remet bien les valeurs exacts (car parfois erreur de quelques px)
this[nomTxt]._width = largeur;
this[nomTxt]._height = hauteur;
}


//creerChamp(Nom du champ texte, texte a mettre, profondeur, largeur du champ, hauteur du champ, coo Y, coo X)
creerChamp('nom','yeahh',0, 250, 80, 0, 170);
creerChamp('nom2','yeeeeeeeeeeaaahh',10, 250, 80, 0, 110);





 Historique

19 juin 2009 14:02:33 :
Petite modif -> changement de la couleur de police blanche par noire

 Sources de la même categorie

Source avec Zip Source avec une capture LANCER UNE GALERIE LIGHTBOX À PARTIR D'UN FLASH par beladom
Source avec Zip SUPER TWEEN PACKAGE par Acidchlorhydrik
Source avec Zip NAVIGATION DANS UN FICHIER XML par inaden
Source avec Zip Source avec une capture TWSCROLLBAR, UNE CLASSE DE SCROLLBAR SIMPLE ET PRATIQUE À UT... par Twinspirit
Source avec Zip Source avec une capture REBOND DE BALLON AVEC TWEEN par habibcode

 Sources en rapport avec celle ci

Source avec Zip SIMULATION D'ORDONNANCEMENT DE PROCESSUS DANS UN PROCESSEUR ... par essametahmed
Source avec Zip Source avec une capture FLASH,TEXTFIELD,CSS,SCROLL par josselinbonnin
Source avec Zip Source avec une capture DIAPORAMA FLASH DYNAMIQUE + XML AVEC MINIATURES(VIGNETTES) E... par baillezon
Source avec Zip CHAMP DE VISION AVEC OBSTACLE ET CIBLE À TROUVER par Slagt
Source avec Zip Source avec une capture MENU (REFAIT) SIMPLE JOLI EFFICACE AVEC ANIMATION par DarkM60

Commentaires et avis

Commentaire de pegase31 le 19/06/2009 15:40:54 administrateur CS

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'

Commentaire de top30 le 19/06/2009 18:23:52

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.

Commentaire de pegase31 le 19/06/2009 19:12:17 administrateur CS

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'

Commentaire de top30 le 19/06/2009 19:46:15

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
}

Commentaire de bat_2504 le 22/06/2009 11:52:57

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 ?

Commentaire de top30 le 22/06/2009 20:22:28

Cherche un peu non ?

Commentaire de top30 le 26/06/2009 20:27:02

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

Commentaire de ths_otra le 29/06/2009 12:01:59

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 !

Commentaire de ths_otra le 29/06/2009 12:12:36

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 ) ;

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Changer la taille d'un clip en fonction de la longueur d'un champ de texte dynamique [ par neovalpox ] Tout est dans le titre ^^Je cherche a agrandire ou r&#233;tr&#233;ssire une bulle (comme dans les BD) en fonction de la taille du texte dynamique qui Ne pas avoir la même taille de police dans un texte dynamique ?! [ par __Nianiok_43___ ] Bonjour &#224; tous! J'ai 2 petits soucis dont je voudrais vous faire part:1&#176;) On va dire que je d&#233;bute en flash et j'ai un petit soucis ave Police d'un champ dynamique [ par Le Raton Laveur ] Bonjour,Voila je poste car je n'ai pas trouvé de solution à mon problème qui est :J'ai un champ de texte dynamique et je lui dit de mettre un certain taille police dans un TextField [ par blat ] Bonjour,J'ai cr&#233;e un objet sur lequel j'ai plusieurs TextField. Tous sont param&#233;tr&#233;s en Arial 12. La seule diff&#233;rence est la haute effet sur texte et css [ par brightblade ] Voila j'ai un petit souci, j'aimerai mettre des effets sur mon texte (par exmeple de la transparence progressive) je charge mon texte &#224; partir de probleme balise <span> dans un champ texte dynamique [ par bog48 ] bonjour, voil&#224; mon petit probleme: je voudrais charger un texte au format html dans un champ de texte dynamique...pas de probleme bien sur mais charger xml rss news dans champ de texte dynamique [ par timbmc ] Salut, désolé, c'est surement un truc simple, mais je suis super nul... ça fait 3 jours que je cherche un peu partout mais j'arrive pas à trouver qqch champ texte dynamique - htmltext et balise <img> [ par phpemilie ] Bonjour à tous,J'essaie de faire un truc qui pourrait être simple mais qui s'avère être prise de tête...Peut être allez-vous pouvoir m'aider...J'ai un graphique excel [ par ecilala ] Bonjour,Je suis en train de créer des modèles de graphiques avec excel. J'aimerais savoir comment on peut créer une forme standard de graphiques. Je m Champ dynamique qui commande un clip [ par Jblenderj ] Bonjour Alors voilà je vais tenté d'être clair.J'ai fait une animation assez simple avec 2 boutons , un champ de texte dynamique, et un clip avec 2 im


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,640 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales