Kann auf Variable nicht zugreifen in AS

Briefkasten

Erfahrenes Mitglied
Hallo,

folgender Code:

PHP:
var text = []; //neues array
var bildname = [];

///DB abfrage in loaddb.php
///die von loaddb.php xml generierte Daten ins flash holen
var XMLdaten = new XML();  
XMLdaten.ignoreWhite=true;  
XMLdaten.load("http://localhost/Projekte/Skripte/flash/loaddb.php");  
XMLdaten.onLoad = function(success)
{  
    if(success)
	{ 
        anzahl = XMLdaten.firstChild.childNodes.length; //liest die anzahl der elemente aus!
		
        for (var i=0; i<anzahl; i++)
		{  
            text[i] = XMLdaten.firstChild.childNodes[i].attributes.anzeige;//auslesen 
			bildname[i] = XMLdaten.firstChild.childNodes[i].attributes.bildname;
            //_root.createTextField("teext"+i, i, 10, i*20, 0, 0);  
            //_root["teext"+i].autoSize = true;  
            //_root["teext"+i].text = bildname[i];
        } 
    } 
} 
trace(bildname[0]);

In der letzten Zeile (trace(bildname[0]);) erhalte ich imer die Meldung undefiniert. Wie kann das sein, wenn ganz oben die Variable definiert wurde. Wenn ich das _root auskommentiere wird mir der Wert auf die Bühne geschrieben. Hat jemand eine Idee woran das liegen könnte?

mfg
 
Soweit ich weiß, muss es trace ("bildname[0]") heißen. Also mit den "" in der Klammer.
Mobbel

Hm nein, dass kann es nicht sein, denn mit den " wird die übergabe als string interpretiert und ich erhalte als ausgabe bildname[0].

Ich will aber den Wert von bildname[0] ausgeben lassen welcher z.B. "img/bild.jpg" wäre.

Erhalte immer undefined.
 
Hi,

Dein Problem ist, dass die onLoad-Funktion nach der trace-Aktion aufgerufen wird. Datenübertragung in Flash arbeitet asynchron, sprich: nach einer load-Aktion werden nachfolgende Zeilen sofort weiter ausgeführt (sonst würde ja jeder Film anhalten, wärend Daten geladen oder gesendet werden) ... und irgendwann feuert dann Deine onLoad-Funktion (wenn die Daten angekommen sind).

Setze die trace-Aktion daher ans Ende der onLoad-Methode.

Gruß
.
 
Zurück