Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flash
Flash Forum d'entraide sur la technologie Flash (Cours, FAQs, Sources)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/06/2007, 06h08   #1
Invité de passage
 
Inscription : juin 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 9
Points : 4
Points : 4
Par défaut Action Script:Tableaux a plusieurs dimensions: Help!

Bonjour a tous,

Je suis encore debutant en Action Script.

Voici un code tres simple:

var tab:Array = new Array(5, 8, 2);
tab [0][0][0] = 10;

trace (tab[0][0][0]);

La valeur n'est pas 10, mais undefined. Pourquoi?
Il me semble que ca fonctionne avec 2 dimensions, mais pas avec 3. J'ai vraiment cherche partout, ca doit etre simple mais je n'ai aucune explication.

Merci d'avance
Romdeux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2007, 07h55   #2
Rédacteur
 
Avatar de The_Pretender
 
Homme Matthieu DELOISON
Formateur ActionScript Flash
Inscription : juin 2004
Messages : 645
Détails du profil
Informations personnelles :
Nom : Homme Matthieu DELOISON
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Formateur ActionScript Flash
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juin 2004
Messages : 645
Points : 3 673
Points : 3 673
Bonjour,


Tu as seulement crée un tableau 1 dimension.

Pour récupérer tes valeurs :
Code :
1
2
3
4
var tab:Array = new Array(5, 8, 2);
tab [0] = 5
tab [1] = 8
tab [2] = 2
Voici un exemple de création d'un tableau à 2 dimensions :

Code :
1
2
3
4
var aTab:Array = new Array();
 
aTab["hello"] = "bonjour";
aTab["bye"] = "au revoir";
The_Pretender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2007, 08h29   #3
Membre Expert
 
Avatar de jean philippe
 
Inscription : septembre 2006
Messages : 2 062
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 2 062
Points : 2 075
Points : 2 075
Envoyer un message via MSN à jean philippe Envoyer un message via Skype™ à jean philippe
salut
sinon pour un tableau tridimentionnel tu peux l'écrire ainsi :
Citation:
var troisDArray:Array = [[1, 2], [3, 4], [5, 6]];
trace(troisDArray[0][1]);//2

trace(troisDArray[2][1]);//6
__________________
mon Blog
jean philippe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2007, 15h35   #4
Invité de passage
 
Inscription : juin 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 9
Points : 4
Points : 4
Par défaut plus de precisions sur ma question

Merci a vous. Je comprends maintenant mon erreur et vos exemples, mais mon probleme n'est pas vraiment resolu. Je pense avoir mal explique ce que j'entends par 3 dimensions:
Imaginez 3 meubles, chaque meuble contient 4 tiroirs, et chaque tiroir contient 5 boites. Chaque boite est pleine ou vide, disons que c'est une booleenne.
Comment creer ce tableau, et ensuite acceder aux elements? Par exemple, l'element (1, 3, 0) ferait refrence a l'element de la premiere boite (index 0) du tiroir 4 (index 3) du meuble 2 (index 1).
Voila ce que j'entendais par trois elements.
Est-ce que l'utilisation de tableaux est la meilleure solution pour faire ca? Peut-etre des objets imbriques les uns dans les autres (mais je trouve ca tres lourd de creer un objet dans le seul but de grouper deux variables)?

Merci a vous,
Romdeux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2007, 16h33   #5
Rédacteur
 
Avatar de The_Pretender
 
Homme Matthieu DELOISON
Formateur ActionScript Flash
Inscription : juin 2004
Messages : 645
Détails du profil
Informations personnelles :
Nom : Homme Matthieu DELOISON
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Formateur ActionScript Flash
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juin 2004
Messages : 645
Points : 3 673
Points : 3 673
Tout dépend si tu as plus de données à regrouper. Dans ce cas la, l'utilisation d'un objet est plus logique et plus souple.

Par exemple un objet meuble contient x tiroir, x porte....

un tiroir serait donc aussi un objet particulier de chaque meuble contenant sa couleur, sa matière, le nombre de boites...

Sinon voici un exemple de gestion avec un tableau
(Imaginez 3 meubles, chaque meuble contient 4 tiroirs, et chaque tiroir contient 5 boites. Chaque boite est pleine ou vide, disons que c'est une booleenne) :

Code :
1
2
3
4
5
6
7
8
 
var aMeuble:Array = new Array();
 
// le 1er meuble
aMeuble[0]["tiroir"] = 4;// contient 4 tiroirs
aMeuble[0]["tiroir"][0] = 5;// le premier tiroir contient 5 boites
aMeuble[0]["tiroir"][1] = 3;// le deuxième tiroir contient 3 boites
aMeuble[0]["tiroir"][0]["boites"][0] = 1;// la première boite du premier tiroir est pleine
Avec une gestion par tableau, cela devient vite galète et difficile à s'y retrouver.
The_Pretender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2007, 18h23   #6
Invité de passage
 
Inscription : juin 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 9
Points : 4
Points : 4
(Imaginez 3 meubles, chaque meuble contient 4 tiroirs, et chaque tiroir contient 5 boites. Chaque boite est pleine ou vide, disons que c'est une booleenne) :

Code :
1
2
3
4
5
6
7
8
 
var aMeuble:Array = new Array();
 
// le 1er meuble
aMeuble[0]["tiroir"] = 4;// contient 4 tiroirs
aMeuble[0]["tiroir"][0] = 5;// le premier tiroir contient 5 boites
aMeuble[0]["tiroir"][1] = 3;// le deuxième tiroir contient 3 boites
aMeuble[0]["tiroir"][0]["boites"][0] = 1;// la première boite du premier tiroir est pleine

Merci sincerement pour ton aide, mais ca ne marche pas . J'en reviens au meme probleme. N'importe quelle variable accedee par le troisieme element, ici aMeuble[0]["tiroir"][0]["boites"][0] reste undefined. Par contre ca marche bien avec deux elements (mais pas trois).

De plus je me demandais si dans ton code il ne faudrait pas utiliser l'instruction new pour la creation de chaque nouvel element, ou peut-etre push?

Merci beaucoup
Romdeux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2007, 21h37   #7
Invité de passage
 
Inscription : juin 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 9
Points : 4
Points : 4
Citation:
Envoyé par jean philippe
salut
sinon pour un tableau tridimentionnel tu peux l'écrire ainsi :
Code :
1
2
3
4
5
 
var troisDArray:Array = [[1, 2], [3, 4], [5, 6]];
trace(troisDArray[0][1]);//2
 
trace(troisDArray[2][1]);//6
Effectivement, c'est plus simple de definir les trois elements a la declaration du tableau.
Plus precisement, voici comment j'ai fait pour definir trois elements:


Code :
1
2
 
var troisDtab:Array  = [[ [10,32], [5,4], [3,2]] ,  [[10,20], [6,3], [7,4]] ];
Ceci n'est qu'un exemple. Ainsi:
troisDtab [0][0][1] = 32;
troisDtab [1][1][0] = 6;

Meci a tous!
Romdeux est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h46.


 
 
 
 
Partenaires

Hébergement Web