ActionScript2 : nom de variable dynamique

Fermé
Derwoed Messages postés 2 Date d'inscription dimanche 16 février 2014 Statut Membre Dernière intervention 16 février 2014 - Modifié par Derwoed le 16/02/2014 à 12:57
 Alko - 17 févr. 2014 à 14:38
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

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 dimanche 16 février 2014 Statut Membre Dernière intervention 16 février 2014
16 févr. 2014 à 19:03
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
comme ça je croit

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

this["test"+i] = 0;

}
0