Comment créer un tableau de N variables structurées

barockeuse Messages postés 23 Date d'inscription lundi 24 mars 2008 Statut Membre Dernière intervention 30 janvier 2011 - 8 déc. 2009 à 03:06
barockeuse Messages postés 23 Date d'inscription lundi 24 mars 2008 Statut Membre Dernière intervention 30 janvier 2011 - 8 déc. 2009 à 04:34
Bonjour !

J'ai un tableau de variables stucturées à faire en as2 avec flash.

Je lis un xml qui contient différentes infos sur N éléments.
Par ex : libellé et nombre.

Je voudrais ranger ça dans un tableau avec une boucle for.

var un_element:Object = new Object();
un_element.lib = ' ';
un_element.nb = 0;

var tabElements:Array = new Array;

Dans la fonction de lecture du xml il y a
lecture du nombre d'éléments, puis :

for (i=0; i<nbElements; i++) {
un_element.lib = x.childNodes[3].childNodes[i].attributes.lib;
un_element.nb = x.childNodes[3].childNodes[i].childNodes[0].childNodes[0];

tabElements.push (un_element);
trace (" lib " + tabElements[i].lib ) ;
trace (" nb " + tabElements[i].nb ) ;
}

Jusque là, ça a l'air de marcher. J'ai bien l'affichage des couples successifs : libelle et nb.

Par ex, si dans le xml j'ai :

element 1 :
libellé = cacahuette
nb = 10

element 2 :
libellé = asticot
nb = 200

Dans la boucle j'ai bien ces éléments là qui sont tracés correctement.

Mais si dans la boucle, après le push, j'ajoute :

if (i>0)
trace ("lib 0: " + tabElements[0].lib + " lib 1: " + tabElements[i].lib ) ;

(i=1 à ce moment) j'obtiens
lib 0: asticot lib 1: asticot

Deux fois la même chose comme si l'indice ne servait à rien !

De même si j'accède au tableau des éléments en sortie de la boucle, que ce soit pour i=0 ou i=1 j'ai toujours les asticots et le nb 200 !

Est-ce que quelqu'un a une idée?

J'ai déjà cherché vainement la bonne solution pour faire ce tableau de structures, j'ai essayé push, sans trop savoir comment m'y prendre .. mais ya un gros big dans ma méthode !

Merci de votre aide... ;-)

1 réponse

barockeuse Messages postés 23 Date d'inscription lundi 24 mars 2008 Statut Membre Dernière intervention 30 janvier 2011
8 déc. 2009 à 04:34
Je viens d'essayer une solution qui semble marcher..

J'ai supprimé ces lignes
var un_element:Object = new Object();
un_element.lib = ' ';
un_element.nb = 0;

et j'ai mis dans la boucle for la création de l'objet un_element à chaque itération :

for (i=0; i<nbElements; i++) {

var un_element:Object = new Object();

un_element.lib = x.childNodes[3].childNodes[i].attributes.lib;
un_element.nb = x.childNodes[3].childNodes[i].childNodes[0].childNodes[0];

tabElements.push (un_element);
trace (" lib " + tabElements[i].lib ) ;
trace (" nb " + tabElements[i].nb ) ;
}


Et les traces sont bonnes en sortie de boucle.

Mais je me demande si c'est bien orthodoxe comme gestion dynamique des variables !

Merci de vos avis ...
0
Rejoignez-nous