Remplacer eval en as3

xaviergainsbourg Messages postés 22 Date d'inscription samedi 29 juillet 2006 Statut Membre Dernière intervention 22 mai 2009 - 22 mai 2009 à 10:22
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 - 22 mai 2009 à 18:03
Bonjour à tous,
Est-ce que quelqu'un sait comment transcrire ce type de code AS2 en AS3 :

for(i=1; i<=20; i++){
   eval("vignette"+i) = eval("vignette"+i);
}

La déclaration des variable, leur nom et leur valeur dépendent d'une boucle.

Merci d'avance (bcp)

7 réponses

pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
22 mai 2009 à 11:24
Bonjour,

"eval" est de l'AS1 et est remplacé par "this[]" depuis l'as2.

Peg'
0
xaviergainsbourg Messages postés 22 Date d'inscription samedi 29 juillet 2006 Statut Membre Dernière intervention 22 mai 2009
22 mai 2009 à 14:59
Le problème est que "this[]" est beaucoup plus restrictif que "eval()" et ne permet pas les mêmes fonctionnalités, même en AS3.

Comment déclarer en AS3 des variables dans des boucles avec des noms et des contenus de variable en fonction de "i" ??

Code fonctionnant en AS2 :
for(i=1; i<=20; i++){
   eval("NomVar"+i) = eval("contenuVar"+i);
}

???
Merci d'avance
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
22 mai 2009 à 15:34
pourquoi ne pas stocker tes variables dans un tableau et appeler le contenu ?
C'est ta méthode qui n'est pas bonne, car elle reste trop fermée sur les mécanismes AS2.

Peg'
0
xaviergainsbourg Messages postés 22 Date d'inscription samedi 29 juillet 2006 Statut Membre Dernière intervention 22 mai 2009
22 mai 2009 à 16:54
merci Peg'
j'ai pensé faire un tableau, c'est vrai que c'est plus propre... mais cela ne résout pas mon problème

----------------------------------------------------------------------------


    var j:int;

    var i:int;

    var tableauConteneur:Array = new Array();

   

    var cb_1_titre:String = "t1est";

    var cb_2_titre:String = "te2st";

    var cb_3_titre:String = "t3est";

   

    for (j=1; j<4; j++){

        tableauConteneur.push(this["cb_"+j+"_titre"]);  // renvoi null

    }
------------------------------------------------------------------------------
Étonnement, si on définit les variables comme ça : " cb_1", avec "this["cb_"+j]" la valeur renvoyé est "undefined"
Comment nommer une variable en fonction de "i" dans une boucle en actionscript 3 ?
oué, c'est dur d'enterrer ce bon vieux "eval()"...
0

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

Posez votre question
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
22 mai 2009 à 17:04
Ben tu crées un tableau contenant les premières variables et ensuite tu remplis un autre tableau avec les données prises dans le premier ...
Le mieux est de cloner le tableau existant, comme ça plus besoin de boucle For.

Au final, je ne comprend pas pourquoi tu veux assigner 2 fois les mêmes données à deux variables différentes ...

Peg'
0
xaviergainsbourg Messages postés 22 Date d'inscription samedi 29 juillet 2006 Statut Membre Dernière intervention 22 mai 2009
22 mai 2009 à 17:54
oui mais je suis obligé d'utiliser la boucle for : le nombre de variable est administrable et peut donc changer

Est-ce que rien ne remplace "eval ()" ?? :-(
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
22 mai 2009 à 18:03
Quel est le problème ?
Tu remplis ton tableau de base qui a une longueur de X et tu le dupliques en en un autre tableau qui a aussi une longueur de X.
en plus ça se fait en une seule instruction ...

C'est juste une autre méthode, bien plus simple à utiliser.

Peg'
0
Rejoignez-nous