[AS] Dupliquer dynamiquement un champ texte.

Dupliquer dynamiquement un champ texte. [AS] - Flash/ActionScript - Programmation

Marsh Posté le 17-11-2005 à 10:52:29    

Salut à tous,
 
Je suis un novice sous ActionScript/Programmation. J'en avais fait il y a quelques temps, du temps de la version 4/5, en tant qu'infographiste pour mon site personnel, et comme je veux en refaire un (j'ai changé de branche entre-temps), j'ai besoin de me mettre à AS2.0 et à la nouvelle structure (sensibilité à la casse, typage des variables, etc.).
 
J'ai besoin d'une fonction me permettant de créer *plusieurs* "Textfield" de manière dynamique, afin d'en créer et de les disposer les uns en-dessous des autres, pour ensuite les fournir avec des données d'un XML. La partie XML/CSS/Chargement est ok. MAIS la création en série de champs texte ne fonctionne pas. Voilà ce que j'ai tenté :  
 

Code :
  1. function createTF(X,Y,L,H,nbr){
  2. var i:Number;
  3. for (i=0 ; i<nbr ; i++){
  4.  var myTF="CT"+i; //CT pour "ChampTexte", un chiffre pour différencier.
  5.  this.createTextField(myTF,i,X,Y,L,H);
  6.  trace(myTF); //trace: CT0, CT1, CT2.
  7.  this[myTF].border=true;
  8.  this[myTF].text="blabla";
  9.  trace(myTF.text); //trace: undefined, undefined, undefined.
  10. }
  11. };
  12. createTF(100,100,250,20,3); //si nbr=1 ok, mais plus de 1 (ici 3), marche pas.


 
Comme je l'ai indiqué, lorsque je passe le paramètre "nbr" de la fonction à "1", il me crée et me remplit bien le Textfield, alors nommé "CT0". Seulement, si je passe le "nbr" à un chiffre plus élevé (3 dans l'exemple), ça foire. Il ne me crée pas plusieurs champs.
 
Donc, mes questions :
 
1- Est-il possible de créer plusieurs TextField de cette manière ?  
 
2- Si oui, comment ?  quel doit être la structure de ma fonction ?
 
3- Si non, quelles sont les solutions pour résoudre le pb ?
 
Note : je suis en formation, et vu le proxy/filtrage qu'on a ici, je n'ai accés qu'à trés peu de sites pendant la semaine, si vous pouviez évitez les liens, ou alors sur Macromedia (au pire, je lirais le week-end, mais bon...).
 
Merci.
 :D


Message édité par kwadbox le 17-11-2005 à 14:31:33
Reply

Marsh Posté le 17-11-2005 à 10:52:29   

Reply

Marsh Posté le 17-11-2005 à 14:35:55    

Code :
  1. function createTF(X,Y,L,H,nbr){
  2. var i:Number;
  3. for (i=1 ; i<=nbr ; i++){
  4.  var myTF="CT"+i; //CT pour "ChampTexte", un chiffre pour différencier.
  5.  this.createTextField(myTF,i,X,Y+H*i,L,H); //changement de profondeur et de position en y avec "i"
  6.  trace(myTF); //trace: CT0, CT1, CT2.
  7.  this[myTF].border=true;
  8.  this[myTF].text="blabla";
  9.  trace(this[myTF].text); //trace: blahblah, blahblah, blahblah.
  10. }
  11. };


 
il les crée bien mais les uns au dessus des autres (le undefined c'est parcque tu as oublié this[])


---------------
D3
Reply

Marsh Posté le 17-11-2005 à 15:55:45    

Parfait !
Cela fonctionne sans problème.
 
J'allais faire le placement des divers TextField par la suite, mais je voulais savoir pourquoi il ne me l'affichait pas. Je me suis rendu compte du problème de profondeur (il suffit d'utiliser l'incrémenteur i, et hop!), mais le trace ne m'affichait rien, et pour cause... j'm'fais tout petit, ok ?
 
Quant au problème d'affichage sur écran, il venait non pas du code, mais du fait que j'avais déjà des Champs Textes crées manuellement sur la scène. Du coup, CreateTextField ne semble pas vouloir en créer de nouveau avec le même nom d'instance (plutôt que de me les écraser...). Bref, c'est bon à savoir.
 
Merci !
 :jap:  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed