[Flash] Multi-dimensionele array probleem

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Xurk
  • Registratie: Mei 2002
  • Laatst online: 24-04-2024

Xurk

Burnside

Topicstarter
Ik heb een XML-bestand ingeladen in mijn Flash project en hiervan wil ik alle waarden van de tags opslaan in een multi-dimensionale array (door middel van een for loop).

Ik heb de multi-dimensionele array structuur als volgt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function buildXML () {
    kunstElements = new Array("id", "url", "naam", "omschrijving", "maker", "x", "y");
    var kunstXML = xmlData.firstChild;
    var kunstLength = xmlData.firstChild.childNodes.length;
    
    var arrayElements = "";
    for (j = 0; j < kunstLength; j++) {
        if (j == (kunstLength - 1)) {
            arrayElements = arrayElements + j;
        } else {
            arrayElements = arrayElements + j + ", ";
        }
    }
    
    kunstNrs = new Array(arrayElements);
    
    kunstArray = new Array(kunstNrs, kunstElements);
    for (i = 0; i < kunstLength; i++) {
        kunstArray[i]["id"] = kunstXML.childNodes[i].childNodes[0].firstChild.nodeValue;
        kunstArray[i]["url"] = kunstXML.childNodes[i].childNodes[1].firstChild.nodeValue;
        kunstArray[i]["naam"] = kunstXML.childNodes[i].childNodes[2].firstChild.nodeValue;
        kunstArray[i]["omschrijving"] = kunstXML.childNodes[i].childNodes[3].firstChild.nodeValue;
        kunstArray[i]["maker"] = kunstXML.childNodes[i].childNodes[4].firstChild.nodeValue;
        kunstArray[i]["x"] = kunstXML.childNodes[i].childNodes[5].firstChild.nodeValue;
        kunstArray[i]["y"] = kunstXML.childNodes[i].childNodes[6].firstChild.nodeValue;
        
trace(kunstArray[i]["y"]);
    }
    
}


Die trace onderin mijn for loop geeft alleen voor de eerste twee i-waarden (0 en 1) values terug, voor de i-waarden 2 en 3 krijg ik in mijn output scherm "undefined" (in totaal zijn er ook maar 4 nodes in de XML, dus 0 tot en met 3 in de array).
Weet iemand hoe dit kan, dat de laatste twee items in de array lijken te worden genegeerd, terwijl de eerste twee wel werken? In mijn XML zijn alle nodes identiek aangezien deze door PHP gegenereerd zijn, dus daar ligt de fout niet.

Alvast bedankt!

Mitsubishi Trium Galaxy - Nokia 3330 - Nokia 3510 - Motorola V525 - Samsung E730 - HTC Touch - HTC Touch HD - HTC Desire - HTC Sensation - HTC One X+ - LG Nexus 5 - LG Nexus 5X


Acties:
  • 0 Henk 'm!

  • sanderb
  • Registratie: November 2000
  • Laatst online: 02:28
los van je probleem..
Het is makkelijker om ipv een multidimensionale array in dit geval een array met daarin objecten met properties te plaatsen. Mocht je nog willen sorteren op 1 van de properties kan dat heel eenvoudig dan, bij die multidimensionale array ga je daar wat meer problemen mee krijgen.

Flash ActionScript:
1
2
3
4
5
6
7
8
9
10
var item:Object  = new Object():

item.id = kunstXML.childNodes[i].childNodes[0].firstChild.nodeValue;
item.url = kunstXML.childNodes[i].childNodes[1].firstChild.nodeValue;
item.naam = kunstXML.childNodes[i].childNodes[2].firstChild.nodeValue;
item.omschrijving= kunstXML.childNodes[i].childNodes[3].firstChild.nodeValue;
item.maker = kunstXML.childNodes[i].childNodes[4].firstChild.nodeValue;
item.x = kunstXML.childNodes[i].childNodes[5].firstChild.nodeValue;
item.y = kunstXML.childNodes[i].childNodes[6].firstChild.nodeValue;
kunstArray[i] = item;

" A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools. " - Douglas Noel Adams


Acties:
  • 0 Henk 'm!

  • Xurk
  • Registratie: Mei 2002
  • Laatst online: 24-04-2024

Xurk

Burnside

Topicstarter
Ah, thanks voor je reply :)

Ik zal het morgen eens proberen, heb het geloof ik weleens eerder zo gedaan, maar het leek me gewoon even handig om alles bij elkaar in 1 array toegankelijk te hebben. Maar als dat nog problemen gaat opleveren zoals je zegt, is het misschien maar beter om het op de "normale" manier te doen :)

Mitsubishi Trium Galaxy - Nokia 3330 - Nokia 3510 - Motorola V525 - Samsung E730 - HTC Touch - HTC Touch HD - HTC Desire - HTC Sensation - HTC One X+ - LG Nexus 5 - LG Nexus 5X