Tableaux multidimensionnels...

Tableaux multidimensionnels... - Flash/ActionScript - Programmation

Marsh Posté le 08-07-2005 à 14:01:15    

j'ai lu que ça buggassait... est-ce vrai ?
 
 

Citation :


Etagere = new Array()
Etagere[0,0]="Whisky"
Etagere[0,1]="Gin"
Etagere[0,2]="Vodka"
  Etagere[1,0]="Jus d'orange"
  Etagere[1,1]="Sirop de grenadine"
  Etagere[1,2]="Soda"
trace (Etagere[0,0]) // Jus d'orange
trace (Etagere[0,1]) // Sirop de grenadine
trace (Etagere[0,2]) // Soda
  trace (Etagere[1,0]) // Jus d'orange
  trace (Etagere[1,1]) // Sirop de grenadine
  trace (Etagere[1,2]) // Soda
trace (Etagere.length) // 3 !!!
 
Donc, pas de tableaux multi-dimensionnels ! Ou alors c'est moi qui n'ai rien compris...
 

Reply

Marsh Posté le 08-07-2005 à 14:01:15   

Reply

Marsh Posté le 08-07-2005 à 14:20:47    

je viens de faire le test...
 

Code :
  1. item=new Array();
  2. item[0,1]="Dupont";
  3. item[0,2]="André";
  4. item[1,1]="Lepont";
  5. item[1,2]="Pierre";
  6. trace("nom 0 :"+item[0,1]);
  7. trace("prenom 0 :"+item[0,2]);
  8. trace("nom 1 :"+item[1,1]);
  9. trace("prenom 1 :"+item[1,2]);


 
me retourne :
 
nom 0 : Lepont
prenom 0 : Pierre
nom 1 : Lepont
prenom 1 : Pierre
 
 
et

Code :
  1. item=new Array();
  2. item[0,nom]="Dupont";
  3. item[0,prenom]="André";
  4. item[1,nom]="Lepont";
  5. item[1,prenom]="Pierre";
  6. trace("nom 0 :"+item[0,nom]);
  7. trace("prenom 0 :"+item[0,prenom]);
  8. trace("nom 1 :"+item[1,nom]);
  9. trace("prenom 1 :"+item[1,prenom]);


 
me retourne :
 
nom 0 : Pierre
prenom 0 : Pierre
nom 1 : Pierre
prenom 1 : Pierre
 
:(:(:(.... comment faire alors ?


Message édité par freed102 le 08-07-2005 à 14:21:22
Reply

Marsh Posté le 08-07-2005 à 14:26:35    

et ça :
 

Code :
  1. item=new Array();
  2. item[0][nom]="Dupont";
  3. item[0][prenom]="André";
  4. item[1][nom]="Lepont";
  5. item[1][prenom]="Pierre";
  6. trace("nom 0 :"+item[0][nom]);
  7. trace("prenom 0 :"+item[0][prenom]);
  8. trace("nom 1 :"+item[1][nom]);
  9. trace("prenom 1 :"+item[1][prenom]);


 
me retourne :
 
nom 0 :undefined
prenom 0 :undefined
nom 1 :undefined
prenom 1 :undefined

Reply

Marsh Posté le 13-07-2005 à 11:00:37    

freed102 a écrit :

et ça :
 

Code :
  1. item=new Array();
  2. item[0][nom]="Dupont";
  3. item[0][prenom]="André";
  4. item[1][nom]="Lepont";
  5. item[1][prenom]="Pierre";
  6. trace("nom 0 :"+item[0][nom]);
  7. trace("prenom 0 :"+item[0][prenom]);
  8. trace("nom 1 :"+item[1][nom]);
  9. trace("prenom 1 :"+item[1][prenom]);


 
me retourne :
 
nom 0 :undefined
prenom 0 :undefined
nom 1 :undefined
prenom 1 :undefined


 
et ça ?

Code :
  1. item=new Array();
  2. item[0]["nom"]="Dupont";
  3. item[0]["prenom"]="André";
  4. item[1]["nom"]="Lepont";
  5. item[1]["prenom"]="Pierre";
  6. trace("nom 0 :"+item[0]["nom"]);
  7. trace("prenom 0 :"+item[0]["prenom"]);
  8. trace("nom 1 :"+item[1]["nom"]);
  9. trace("prenom 1 :"+item[1]["prenom"]);


Message édité par bozocarzu le 13-07-2005 à 11:05:09
Reply

Marsh Posté le 13-07-2005 à 13:41:12    

lol :)
 
Tout ça ne fonctionnera pas, pour la simple et bonne raison que vous initialisez un tableau à une dimension (new Array()) et que vous essayez directement d'affecter une 2ème dimension...
 
 
Pour faire ce que vous désirez, vous pouvez le faire de bien des syntaxes.
 
Commençons par la plus logique et standard :

Code :
  1. var a1a:Array = new Array();
  2. a1a[0] = new Array();
  3. a1a[0][0] = 'hello';
  4. a1a[0][1] = 'world';
  5. a1a[1] = new Array();
  6. a1a[1][0] = '2ème';
  7. a1a[1][1] = 'ligne';


 
au niveau des indexs alphanumériques, ça donnerai ça :

Code :
  1. var a2a:Array = new Array();
  2. a2a[0] = new Array();
  3. a2a[0]['mot1'] = 'hello';
  4. a2a[0]['mot2'] = 'world';
  5. a2a[1] = new Array();
  6. a2a[1]['mot1'] = '2ème';
  7. a2a[1]['mot2'] = 'ligne';


 
Attention à toujours utiliser une chaine de caractère, ou une variable représentant une chaine de caractère, sinon ça ne va pas jouer... Et ceci n'est plus un tableau multidimensionnel, mais un tableau d'objet, ou plus communément appelé "dataProvider".
 
ça, c'est pour bien comprendre. Maintenant, l'actionScript permet quelques syntaxes rapides qui sont bien utiles pour ce genre de problèmes :
 
La base :

Code :
  1. // indexes numériques
  2. var a1b:Array = new Array();
  3. a1b[0] = new Array( 'hello', 'world' );
  4. a1b[1] = new Array( '2ème', 'ligne' );
  5. // indexes alphanumériques
  6. var a2b:Array = new Array();
  7. a2b[0] = new Object( { mot1:'hello', mot2:'world' } );
  8. a2b[1] = new Object( { mot1:'2ème', mot2:'ligne' } );


 
Un peu plus rapide, maintenant :
 

Code :
  1. // indexes numériques, un tableau est créé en mettant les crochets
  2. var a1c:Array = new Array();
  3. a1c[0] = ['hello', 'world'];
  4. a1c[1] = ['2ème', 'ligne'];
  5. // indexes alphanumériques, un objet est créé en mettant les accolades
  6. var a2c:Array = new Array();
  7. a2c[0] = { mot1:'hello', mot2:'world' };
  8. a2c[1] = { mot1:'2ème', mot2:'ligne' };


 
et enfin, la déclaration ultime :
 

Code :
  1. // indexes numériques
  2. var a1d:Array = [['hello', 'world'], ['2ème', 'ligne']];
  3. // indexes alphanumériques (tableau d'objets de type dataProvider)
  4. var a2d:Array =
  5.     [
  6.     { mot1:'hello', mot2:'world' },
  7.     { mot1:'2ème', mot2:'ligne' }
  8.     ];


 
 
Vala :pt1cable:
 
Enfin, au niveau du pointage, on peut récupérer le contenu d'un dataProvider en pointant sur son nom de 2 manières :
 
a2d[0]['mot1'] donnera 'hello'
a2d[0].mot1 donnera la même valeur, 'hello'
 
Bon courage, a++

Reply

Marsh Posté le 16-12-2009 à 03:34:53    

Bravo pour cette réponse exhaustive titouille.
 
Merci!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed