Adapter automatiquement la taille de police selon les dimensions d'un champ texte (textfield)

Contenu du snippet

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 / Exemple :


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

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.