Un tableau est simplement un ensemble de de variables bien rangées et numérotées séquentiellement.
Avant d'attaquer les tableaux, il est nécessaire d'avoir compris le fonctionnement des variables.
Soit le code suivant, sur la première et unique image clé d'un unique calque d'une nouvelle animation :
Etagere=new
Array() // initialisation
Etagere[0]="Un crayon"
// Assignation d'une valeur au premier élément
trace (Etagere[0]) // affichage de cette
même valeur (un crayon)
On peut accéder à des éléments de tableau non-initialisés sans erreur, mais évidemment, le résultat sera undefined :
Etagere=new Array()
trace (Etagere[334])
Un petit exemple fait mieux comprendre qu'un long discours :
Etagere=new Array("Des
crayons","du
papier","Des
feutres")
trace(Etagere[0]) //
Des crayons
trace(Etagere[1]) //
du papier
trace(Etagere[2]) //
des feutres
trace(Etagere[3]) //
undefined
Et voici une autre façon de procéder, sans utiliser var
Etagere=["Plume","Gomme","Stylo"]
trace(Etagere[0]) // Plume
trace(Etagere[1]) // Gomme
trace(Etagere[2]) // Stylo
trace(Etagere[3]) // undefined
Dans les deux cas précédents, l'initilalisation de base n'empêche pas d'ajouter ou de remplacer des éléments existants :
Etagere=["Plume","Gomme","Stylo"]
Etagere[2] = "Agenda"
Etagere[87] = "Carbone"
trace(Etagere[1]) //
Gomme
trace(Etagere[2]) //
Agenda
trace(Etagere[3]) //
undefined
trace(Etagere[87]) //
Carbone
length permet de connaître la taille du tableau. Attention : il compte les éléments à partir de 1. Je m'explique :
Etagere=["Plume","Gomme","Stylo"]
trace (Etagere.length)
Affiche 3 : les éléments [0], [1] et [2]
Mais attention encore :
Etagere=["Plume","Gomme","Stylo"]
trace (Etagere.length) // 3
Etagere[87] = "Carbone"
trace (Etagere.length) // 88
(éléments de 0 à 87, même si la plupart sont vides)
On peut alors parcourir les éléments du tableau avec une boucle for
Etagere=["Plume","Gomme","Stylo"]
Etagere[5] = "Tasse"
for(Ctr=0 ; Ctr<Etagere.length ; ++Ctr)
{
trace(Etagere[Ctr])
}
Affiche :
Plume
Gomme
Stylo
undefined
undefined
Tasse
Comme on l'a vu, le code suivant est correct :
Vendeur = new Array()
Vendeur[0]="Alfred Muller"
Vendeur[1]="Bertrand Moussou"
Vendeur[2]="Charles Pergot"
trace (Vendeur[0])
trace (Vendeur[1])
trace (Vendeur[2])
Affiche :
Alfred
Muller
Bertrand Moussou
Charles Pergot
Mais s'il s'agit de vendeux de trois villes bien définies, on peut alors écrire :
Vendeur["Paris"]="Alfred
Muller"
Vendeur["Saint Tropez"]="Bertrand
Moussou"
Vendeur["Lyon"]="Charles
Pergot"
Mais on ne peut alors plus y accéder avec des indices numériques :
Vendeur = new Array()
Vendeur["Paris"]="Alfred
Muller"
trace (Vendeur[0])
trace (Vendeur["Paris"])
Renvoie :
undefined
Alfred Muller
On pourrait alors penser à juste titre qu'on perd son temps et son énergie avec les tableaux. De simples variables feront l'affaire :
VendeurParis="Alfred
Muller"
VendeurSaint_Tropez="Bertrand Moussou"
VendeurLyon="Charles Pergot"
Mais revenons tout de même à nos tableaux à iundices textuels : L'utilisation d'une ville non-répertoriée ne donne pas d'erreur, mais undefined :
Vendeur = new Array()
Vendeur["Paris"]="Alfred Muller"
trace (Vendeur["Genève"])
// undefined
Rien n'empêche (même si techniquement ce n'est pas très propre, propre...) de mélanger le numérique avec les textes :
Vendeur = new Array()
Vendeur["Paris"]="Alfred
Muller"
Vendeur[0]="Bertrand Moussou"
Mais attention, car le length
trace (Vendeur.length)
renvoie 1 ! ce qui est évidemment bien malpratique... D'autant que :
Vendeur = new Array()
Vendeur["Paris"]="Alfred Muller"
Vendeur["Lyon"]="Jean Martin"
trace (Vendeur.length) //
0
Renvoie carrément 0 !
Contrairement à ce qu'on pourrait penser :
Etagere = new Array(2)
ne limite en aucun cas le nombre d'éléments à 2 !
Etagere = new Array(2)
Etagere[0]="Scotch"
Etagere[1]="Ciseaux"
Etagere[2]="Colle"
Etagere[3]="Papier"
trace (Etagere[3])
trace (Etagere.length)
Affiche bien :
Papier
4
Attention : j'ai cru constater de très graves bugs avec la "multi-dimension" !!!
Simplement comme ceci :
Etagere = new Array()
Etagere[0,0]="Whisky"
Etagere[5784,1]="Gin"
Etagere[4,6,9]="Vodka"
trace (Etagere[0,0])
trace (Etagere[5784,1])
trace (Etagere[4,6,9])
Renvoie bien
Whisky
Gin
Vodka
Attention aux pièges liés à la multi-dimension de vos tableaux :
Etagere = new Array()
Etagere[0]="Whisky"
Etagere[0,0]="Gin"
Etagere[0,0,0]="Vodka"
trace (Etagere[0])
trace (Etagere[0,0])
trace (Etagere[0,0,0])
trace (Etagere.length)
Affiche :
Vodka
Vodka
Vodka
1
Bon, donc ça ne va pas, mais, contre toute attente, ceci ne va pas non plus :
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...
---