ActionScript2 : nom de variable dynamique

Derwoed Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
 Alko -
Bonjour.

Après 3 ans sans faire de Flash, j'ai un petit projet qui nécessite que je m'y remette.

J'ai un problème tout simple, je n'arrive pas à créer un nom de variable dynamique !

Je dois parser un fichier XML et attribuer la valeur des attributs des noeuds à des variables incrémentées. Ca marche très bien avec des variables nommées en dur dans le code, mais ce n'est pas très pro. J'ai donc voulu créer une boucle (classique "for (var i:Number = 0 ; i < nbObjets ; i++)") mais ma déclaration Variable[i] ne fonctionne pas. J'ai donc repris les bases à 0 et ai fait un bête :

VarDyn = "1";
Var[VarDyn] = "test";
trace(Var1);
J'imaginais naïvement avoir un "test" en sortie, mais n'ai eu qu'un "undefined"...

Où est mon erreur s'il vous plaît ?


Config Flash CS5.5 AS2.

Stéphane.

2 réponses

Robotobor
 
Salut,
bien longtemps pas touché à Flash 2 mais ce problème je l'ai eu souvent et j'y ai remédié comme ça il me semble, à vérifier mais c'était quelque chose comme ça(en fait il faut concaténer le nom de la variable):

for (var i:Number = 0 ; i < nbObjets ; i++){
myvar+i="valeur";
// ou bien "myvar"+i="valeur";
// voire myvar+""+i="valeur";
/* j'espére c'est un des 3 mais ça m'avait bien embêté un moment, c'est vicieux sauf quand on sait ou se rappelle :p */
}

Je sait plus la syntaxe exacte mais c'est quelque chose d'approchant , dommage flash france existe plus je l'avait trouvé là bas sinon il y a mediabox avec de bonnes archives sur l'AS2(quoique la syntaxe est peut être la même en AS3).
0
Derwoed Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
Merci Robotor pour cette réponse. Malheureusement, aucune des 3 ne fonctionne : à partir du moment où on met des ", la variable n'est plus reconnue comme une variable et cela crée une erreur...

D'après mes recherches sur internet, la syntaxe avec [] serait la bonne depuis Flash 5 (Var[VarDyn] = "test"). Mais elle ne donne rien chez moi...

Peut-être que quelqu'un d'autre à une idée ?

Sinon, je suivrais tes conseils, j'irai voir sur mediabox...
0
Alko
 
comme ça je croit

for(var i:int=0;i<9;i++) {

this["test"+i] = 0;

}
0