Forums Développement Multimédia

Aller au contenu

Creation dynamique de nom de variable

CODE Actionscript

17 réponses à ce sujet

#1 Guigman

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 138 messages

Posté 06 February 2003 - 10:57 AM

Salut
Je souhaiterais créer un nom de tableau de manière dynamique du style :

_global.creaTableau=function (_nom,_prenom) {
nom_tableau=_nom+" "+_prenom;
eval(nom_tableau)=new Array();
}
ou

_global.creaTableau=function (_nom,_prenom) {
nom_tableau=_nom+" "+_prenom;
String(eval(nom_tableau))=new Array();
}

Ce n'est pas très joli et ca ne marche pas

Comment faire?

#2 neolao

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 3827 messages

Posté 06 February 2003 - 11:06 AM

tu peux faire
set(nom_tableau) = new Array();

ou
this[nom_tableau] = new array();

#3 Guigman

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 138 messages

Posté 06 February 2003 - 11:20 AM

merci
this[nom_tableau]=new Array fonctionne mais pas set (meme si je mets 2 arguments style : set(nom_tableau,nom) ou set(nom_tableau,"nom")...) smile.gif

#4 neolao

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 3827 messages

Posté 06 February 2003 - 11:22 AM

argh
désolé
j'l'utilise jamais
j'pensais que ca marchait

#5 Guigman

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 138 messages

Posté 06 February 2003 - 11:42 AM

Un truc pas clair,je veux vérifier que mon tableau a bien le bon nom, je fais :
_global.creaTableau=function (_nom,_prenom) {
nom_tableau=_nom+" "+_prenom;
this[nom_tableau]=new Array();
trace(this[nom_tableau]);}
creaTableau("toto","titi");

qd je teste, la fenetre de sortie ne renvoie rien...comprend pas...

#6 neolao

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 3827 messages

Posté 06 February 2003 - 11:50 AM

c normal, si tu traces le tableau
il va te sortir les valeurs à l'intérieur
et comme ya rien
bah ya rien

#7 Saucisson1327249857

    Ceinture Orange

  • Members
  • PipPipPip
  • 41 messages

Posté 06 February 2003 - 11:53 AM

Voici (peut etre) un bout de réponse à t'apporter. :idea:
Voici un extrait d'un de mes codes qui assigne dynamiquement des noms de variables (ici des noms de rubrique) à partir d'un fichier texte externe.

TxtRubrik.onLoad = function() {
//incrémentation du nombre
for (i=0; i<=9; i++) {
// définition du nom de variable à récupérer
NomVar = "sub"+i;
Recup = this[NomVar.valueOf()];
if(recup != undefined){
set("sub"+i, Recup);
}
}
};

May it be helpfull :wink:

Citation



#8 Guigman

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 138 messages

Posté 06 February 2003 - 12:16 PM

Holly shit :?
G rajouté valueOF()(dixit saucisson), pour être sur, mais je n'arrive tjs pas à vérifier si mon tableau toto_titi est créer,c pas faute d'essayer...

#9 Guigman

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 138 messages

Posté 06 February 2003 - 12:17 PM

pardon, le script :
_global.creaTableau=function (_nom,_prenom) {
nom_tableau=_nom+"_"+_prenom;
this[nom_tableau.valueOf()]=new Array("voir","comprendre");
trace[nom_tableau];}
creaTableau(toto,titi);
trace[toto_titi];

#10 jeanphilippe

    Grosso modo

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 30486 messages

Posté 06 February 2003 - 12:22 PM

deja >>> trace(this[nom_tableau]);

#11 Guigman

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 138 messages

Posté 06 February 2003 - 12:30 PM

ok : _global.creaTableau=function (_nom,_prenom) {
nom_tableau=_nom+"_"+_prenom;
this[nom_tableau.valueOf()]=new Array("voir","comprendre");
trace(this[nom_tableau]);}
creaTableau(toto,titi);
trace(this[toto_titi]);

mais la sortie me renvoie
voir,comprendre: cool correspond au premier trace mais pour trace[toto_titi];
undefined: alors qu'il devrait me envoyer pareil non?

#12 Saucisson1327249857

    Ceinture Orange

  • Members
  • PipPipPip
  • 41 messages

Posté 06 February 2003 - 12:51 PM

Après moultes tentatives biggrin.gif j'ai réussi à créer un tableau dynamiquement.
Here is ze scriptum :

_global.creaTableau = function(nom, prenom) {
nomTableau = nom+"_"+prenom;
this[nomTableau.valueOf()] = new Array();
this[nomTableau.valueOf()][1] = "valeur1";
this[nomTableau.valueOf()][2] = "valeur2";

trace(this);
trace(nomTableau);
trace(this[nomTableau.valueOf()]);
};

ensuite un simple appel :
creaTableau("saucisson", "furtif");
permet de créer le tableau "saucisson_furtif" qui contient ("valeur1, "valeur2")

biggrin.gif
:wink:

#13 dehix

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 2165 messages

Posté 06 February 2003 - 13:24 PM

CODE


_global.creaTableau = function(nom, prenom) {

var nomTableau = nom+"_"+prenom;

this[nomTableau] = new Array();

var crtTab = this[nomTableau];

crtTab[0] "valeur1"; // ou crtTab.push("valeur1")

crtTab[1]= "valeur2";



trace(nomTableau);

trace(crtTab);

};


est equivalent , mais probablement plus propre. Ce qu il faut comprendre, C que this["uneChaine"] C un peu comme un tableau sauf que l indice est une string (cf. tut tables associatives) ... normalement si tu fais creaTableau("toto","_titi"), this.toto_titi ca doit etre le tableau .. mais je n en suis pas sur a 100%

#14 Saucisson1327249857

    Ceinture Orange

  • Members
  • PipPipPip
  • 41 messages

Posté 06 February 2003 - 13:31 PM

Vi c'est plus beau à regarder comme code 8O

Well Done John

#15 dehix

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 2165 messages

Posté 06 February 2003 - 13:52 PM

en fait, ta function, faudrait pe mieux qu elle marche comme ca :

CODE




_global.creaTableau = function(nom, prenom) {

var nomTableau = nom+"_"+prenom;

var crtTab = this[nomTableau] = new Array();

return (crtTab);



};



non ?

comme ca tu fais :
CODE


monTab = creaTableau ("titi","toto");

monTab.push(1);

monTab.push(2);

monTab.push(3);

trace(monTab);



#16 neolao

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 3827 messages

Posté 06 February 2003 - 13:56 PM

j'ai vu ca plusieurs fois déjà
return (crtTab);

ca sert à quoi les parenthèses ?

#17 Guigman

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 138 messages

Posté 06 February 2003 - 14:02 PM

Ca Dehix,c tip top... biggrin.gif

#18 dehix

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 2165 messages

Posté 06 February 2003 - 14:03 PM

strictement a rien wink.gif
... probablement une vielle habitude / a un autre langage de programmation (ADA ? ) et puis .. C rien d autre qu une function ...



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)