Bonjour,tout d'abord je tiens à remerciez tout les membres de se forum qui nous permette de progresser chaque jours.
J'ai réalisé une classe de champs texte qui redimensionne automatiquement la taille de la police en fonction de la taille du texte, mais avec cette classe, j'ai des raté parfois (police beaucoup trop grande...)et je ne sais pas du tout pourquoi
[code]
package org.bytearray.texte
{
import flash.text.TextField;
import flash.text.TextFormat;
import flash.events.*;
public class ChampTexteAutoAdaptable extends TextField
{
private var adaptation:Boolean;
private var formatage:TextFormat;
private var tailleInitiale:int;
private var monTexte:String;
private var Width:Number;
public function ChampTexteAutoAdaptable ()
{
addEventListener(Event.RESIZE,resize);
}
public function set autoAdaptation ( pAdaptation:Boolean ):void
{
adaptation = pAdaptation;
}
public function get autoAdaptation ():Boolean
{
return adaptation;
}
public override function set text ( pText:String ):void
{
monTexte=pText;
super.border=true;
super.text = monTexte;
super.wordWrap = true;
super.multiline = true;
super.selectable=false;
if ( autoAdaptation ) adapte();
}
public function resize(e:Event)
{
if ( autoAdaptation ) adapte();
}
private function adapte ():void
{
formatage = getTextFormat();
tailleInitiale = int(formatage.size);
Width=width-0.05*width;
var Height:Number=height-0.05*height;
formatage.align ="center";
var i:Number=0
while ( (textWidth < Width || textHeight < Height) && i<1000 )
{
formatage.size = ++tailleInitiale+i;
setTextFormat ( formatage );
super.autoSize="center";
i++;
}
while ( textWidth > Width || textHeight > Height )
{
if ( formatage.size <= 0 ) return;
formatage.size = --tailleInitiale;
setTextFormat ( formatage );
super.autoSize="center";
}
var texte_array:Array=text.split(" ");
//on test si chaque entre en entier sur la ligne sans etre coupé
if( texte_array.length>0)
{
for each (var mot:String in texte_array)
{
super.text=mot;
setTextFormat ( formatage );
var tailleMini:Number=Number(formatage.size)/4;
while ( textWidth > Width-0.1*Width)
{
if ( formatage.size <= tailleMini ) return;
formatage.size=--tailleInitiale;
setTextFormat ( formatage );
}
}
}
super.text = monTexte;
setTextFormat ( formatage );
if(Width>width)
x=x+(Width-width)/2;
else
x=x+(width-Width)/2;
if(Height>height)
y=y+(Height-height)/2
else
y=y+(height-Height)/2
}
}
}
[/code]