2009-08-02 4 views
0

pour un fichier XML, je veux créer un tableau en actionscript où je peux faire référence à une valeur particulière avec une clé que je mets plutôt que 0, 1, 2, etc.Créer un tableau associatif avec les touches dynamiques dans Actionscript 2

buildings = myParsedObjectFromXML; 

var aBuildings = new Array(); 

for (building in buildings) { 
    var currentBuilding = buildings[building][0]; 
    var key:String = currentBuilding.buildingCode; 

    aBuildings[key][property1] = currentBuilding.someOtherValue; 
    aBuildings[key][property2] = currentBuilding.aDifferentValue; 
    ... etc 
} 

pour que je puisse accéder aux données à une date ultérieure comme celui-ci:

// building description 
trace(aBuildings[BUILDING1][property2]); 

mais ce qui précède ne fonctionne pas - ce que je manque?

Répondre

2

Je commencerais par instanciation mes aBuildings variable comme un objet plutôt qu'un tableau:

var aBuildings = new Object(); 

Ensuite, vous devez créer un objet d'abord pour la clé dans laquelle vous souhaitez stocker les propriétés.

aBuildings[key] = new Object(); 
aBuildings[key]["property1"] = currentBuilding.someOtherValue; 
aBuildings[key]["property2"] = currentBuilding.aDifferentValue; 

Ensuite, vous devriez être en mesure de lire les valeurs des aBuildings objet:

trace(aBuildings["BUILDING1"]["property2"]); 

Gardez à l'esprit que si building1 et property2 ne sont pas des variables de chaîne vous devez utiliser littéraux de chaîne.

+0

+1. Les "tableaux" associatifs ne servent à rien AFAIK. Si vous voulez un ordre numérique, utilisez des tableaux. Si vous voulez accéder par des clés, utilisez un objet. Aussi "{}" est un raccourci pour "new Object()" –

+0

@Chetan Sastry: Un objet dans Actionscript EST un tableau associatif :) – Luke