Dupliquer dynamiquement un champ Text (AS2)

Résolu
Signaler
Messages postés
54
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
19 novembre 2008
-
Messages postés
54
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
19 novembre 2008
-
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

Messages postés
1203
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2009
2
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)

@+
Messages postés
1203
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2009
2
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

@+
Messages postés
54
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
19 novembre 2008

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!
Messages postés
54
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
19 novembre 2008

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
Messages postés
1203
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2009
2
Sans doute parce que this fait référence à la fonction et non à la timeline...

@+
Messages postés
54
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
19 novembre 2008

hehe, c'est tout a fait probable..  mais si c'est le cas.. quel bordel

encore merci pour tes lumieres, en tout cas