Dupliquer dynamiquement un champ Text (AS2)

Résolu
CortoHHasur Messages postés 54 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 19 novembre 2008 - 27 oct. 2008 à 13:48
CortoHHasur Messages postés 54 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 19 novembre 2008 - 29 oct. 2008 à 23:40
salut,

voila, je bloque depuis ce matin sur un bout de code, et je me demande si l'un d'entre vous ne pourrait pas me sortir de cette impasse.

le principe est de dupliquer un chamte de text creer dynamiquement. jusqu'ici, tout ce que j'obtiens est une suite de champs texte, mais un seul s'affiche a la fois.

voila le code en question:

////////////////////////////

var i:Number = 1



function createTextBox(){
 if ( i < 4 ){
 var myTxt:String = "my_txt"+i
 this.createTextField('myTxt', 1, 100, (100+(20*i)), 300, 100);
 this.myTxt.multiline = false;
 this.myTxt.wordWrap = true;
 var my_fmt:TextFormat = new TextFormat();
 my_fmt.color = 0xFFCC00;
 this.myTxt.text = "blahblahblah -> "+i;
 this.myTxt.setTextFormat(my_fmt);
 }else{
 clearInterval(toto)
 trace("stop!")
 }
  i++
}


toto = setInterval(createTextBox, 500)

////////////////////////////

je recupere bien les valeurs my_txt1, my_txt2, my_txt3 mais seul un des 3 champs est creer a chaque interval..

merci
C-H

6 réponses

cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
28 oct. 2008 à 10:40
Salut,

petite erreur dans la création de ton champs de texte

var i:Number = 1
var my_fmt:TextFormat = new TextFormat();
my_fmt.color = 0xFFCC00;
function createTextBox(){
 if ( i < 4 ){
 var monTexte:TextField=this.createTextField( 'myTxt_'+i, i , 100, (100+(20*i)), 300, 100);
 monTexte.multiline = false;
 monTexte.wordWrap = true;
 monTexte.text = "blahblahblah -> "+i;
 monTexte.setTextFormat(my_fmt);
 }else{
 clearInterval(toto)
 trace("stop!")
 }
  i++
}

toto = setInterval(createTextBox, 500)

@+
3
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
28 oct. 2008 à 14:53
stop() var i:Number = 0

var timeline:MovieClip=this

function changeText (){
 if ( i < 4 ){
  var TXT = "my_txt"+i
  var TXT:TextField = timeline.createTextField("TXT", i, 100, 100+(20*i), 300, 100);
  TXT.text = "blahblah n° :"+i
 }
 else{
  clearInterval(toto2)
 }
 i++
 //trace(TXT)
 
}

var toto2:Number = setInterval(changeText, 1)

et voila, parti le _root

@+
3
CortoHHasur Messages postés 54 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 19 novembre 2008
28 oct. 2008 à 13:51
merci de ta réponse ;)

le soucis est qu'elle ne fonctionne pas, je dois surement passer a cote de quelque chose. et le pire est que meme le code initial ne fonctionne plus O_o

j'ai donc tout repris depuis le bédut et voila ce que ca donne:

////////////////////////////

stop()



var i:Number = 0



function changeText (){
 if ( i < 4 ){
  var TXT = "my_txt"+i
  var TXT:TextField = _root.createTextField("TXT", i, 100, 100+(20*i), 300, 100);
  TXT.text = "blahblah n° :"+i
 }
 else{
  clearInterval(toto2)
 }
 i++
 //trace(TXT)
 
}



var toto2:Number = setInterval(changeText, 1)

////////////////////////////

mais n'etant pas un fan de bosser en adresse absolue, je me suis penche sur le souci du _root. et si je remplace ton "this.createTextField" par "_root.createTextField", ton script fonctionne.. et donc, mon reel souci, est le pourquoi du comment 'this' bug le script, et '_root' non.. 2 ans sans toucher a flash, et me voila revenu aux bases!
0
CortoHHasur Messages postés 54 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 19 novembre 2008
28 oct. 2008 à 15:03
waip, ca fonctionne bien mais.. je me triture la matiere grise pour savoir pourquoi 'this' fait bugger le script..

voilou le code finalou:

////////////////////////////

stop()
var i:Number = 0

var timeline:MovieClip=this

function changeText (){
 if ( i < 4 ){
 var TXT = "my_txt"+i
 var TXT:TextField = timeline.createTextField("TXT", i, 100, 100+(20*i), 300, 100);
 TXT.html = true
 TXT.wordWrap = true;
 TXT.htmlText = "http://hh.soonlabel.com/Apps/multiTextField.swf

merci pour ton aide ;)

C-H
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
28 oct. 2008 à 15:12
Sans doute parce que this fait référence à la fonction et non à la timeline...

@+
0
CortoHHasur Messages postés 54 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 19 novembre 2008
29 oct. 2008 à 23:40
hehe, c'est tout a fait probable..  mais si c'est le cas.. quel bordel

encore merci pour tes lumieres, en tout cas
0
Rejoignez-nous