Pb d'affichage dynamique de plusieur champ texte

[Résolu]
Signaler
Messages postés
117
Date d'inscription
mardi 14 janvier 2003
Statut
Membre
Dernière intervention
5 novembre 2008
-
Messages postés
117
Date d'inscription
mardi 14 janvier 2003
Statut
Membre
Dernière intervention
5 novembre 2008
-
bonjour,



pourquoi lorsque que je fait un nouveau createTextField seul le dernier affichage marche????



j'ai en paremetre cette chaine,



chaine = "mot1 mot2 mot3 mot4 mot5 mot6 mot7 mot8 mot9 mot10 mot11"



je voudrai en resultat ceci



mot1 mot2 mot3 mot4 mot5

mot6 mot7 mot8 mot9 mot10

mot11



centré sur le clip onglet



or j'ai juste "mot11" qui s'affiche au bon endroit maisles autres n'apparaissent pas!



voila ma fonction



function Resize_onglet(chaine,onglet_mc)

{

texte=createTextField("onglet",1,onglet_mc._x,onglet_mc._y,100,50);

//textFormat pour définir la police, couleur, gras,... qui auront été lu dans xml

texte.autoSize=true;

texte.text = chaine;



//si la chaine rentre sans découpe

if (texte.textWidth < onglet_mc._width)

{

// on centre le texte

texte._y = onglet_mc._y + onglet_mc._height / 2 - texte.textHeight /2;

texte._x = onglet_mc._x + (onglet_mc._width - texte.textWidth)/2;



}

else //si la chaine ne rentre pas

{

//on découpe la chaine en un tableau de mot

words = chaine.split(" ");

i=0;



//tableau contenant une ligne à afficher (mieux que multiline car peut centrer

//comme on veut

var t:Array=new Array();



//indice de ce tab

indT=-1;



do{


t.push(createTextField("onglet"+indT+1,1,onglet_mc._x,onglet_mc._y+(indT+1)*30,100,50));

indT++;

t[indT].autoSize=true;

t[indT].multiline=false;

t[indT].text = words[i++];



while
(t[indT].textWidth < onglet_mc._width &&
i<words.length )

{

t[indT].text=t[indT].text+" "+words[i++];

}



//si la boucle s'est arreté parce qu'on a dépassé l'onglet

if (t[indT].textWidth > onglet_mc._width)

//alors on enleve le dernier mot



t[indT].text=t[indT].text.substr(0,t[indT].text.length -
words[--i].length - 1);

trace(" chaine actuelle :"+ t[indT].text);

}while(i<words.length);



//petite variable pour ne faire l'addition qu'une seule fois et non pas à chaque

//fois dans la boucle

bas_onglet_mc_y = onglet_mc._y + onglet_mc._height;



//maintenant, on centre les lignes comme on veut

for(i=0;i<t.length;++i)

{

pos_y = onglet_mc._height/2 - t.length * (t[i].textHeight+2) /2 ;

//t.length *
(t[i].textHeight+2) /2 => la hauteur de tout le bloc text avec
chaque ligne espacée de 2 pixel



//si le cadre
de texte est plus haut que l'onglet, on se positionne quand meme

//au début de l'onglet et on tronquera la fin

if(pos_y < 0)

pos_y = 0;

t[i]._y = onglet_mc._y + pos_y + + i*t[i].textHeight + 2;


//i*t[i].textHeight + 2 =>se positionner selon le numero de
ligne

t[i]._x = onglet_mc._x + (onglet_mc._width - t[i].textWidth)/2;



//vérifie que l'on ne sort pas de l'onglet

if (t[i]._y + t[i].textHeight > bas_onglet_mc_y)

t[i].visible=false;



}

}

}



merci



lily

1 réponse

Messages postés
117
Date d'inscription
mardi 14 janvier 2003
Statut
Membre
Dernière intervention
5 novembre 2008

pardon,



j'ai trouvé,



c'est a ca que sert le champ profondeur de ma fonction createTextField!!!! :o) forcément j'ecrasais le précédent!



des fois il ne faut pas chercher loin! :o)



lily