globale variable -> undefined

fatxy

Grünschnabel
Ich entdecke meinen Fehler nicht :mad:

innerhalb der funktion kann ich auf filename[] zugreifen, außerhalb nicht obwohl ich _global gesetzt hab

PHP:
myBildLoader.onLoad = function() {
	anzLadeversuche++;
	if (myBildLoader.loaded) {
		bildstatus.text = "";
		_global.filename = new Array();
		var bilder:Array = myBildLoader.firstChild.childNodes;
		anzahlbilder = bilder.length;
		for (var i:Number = 0; i<anzahlbilder; i++) {
			filename[i] = bilder[i].childNodes[0].firstChild.nodeValue;
		}
		//trace(filename);
	} else {
		if (anzLadeversuche<maxLadeversuche) {
			myBildLoader.load(myBildSource);
		} else {
			bildstatus.text = "Fehler!";
		}
	}
};
trace(filename);

es geht auch nicht wenn ich _global außerhalb der myBildLoader Funktion schreibe
 
Zuletzt bearbeitet:
Vielleicht das da:
PHP:
//var bilder:Array = myBildLoader.firstChild.childNodes;
var bilder:Array = myBildLoader.childNodes.firstChild;

Du könntest auch direkt in den Array filename schreiben:
PHP:
for (var i=0; i<anzahlBilder; i++) {
   filename[i] = myBildLoader.childNodes[i].firstChild;
}

Alles ungetestet ;)
 
hmm ich weiß nicht, dann weiß ich nicht wieviel einträge das xml hat und kann den dumme filename array nicht füllen.

das trace innerhalb der funktion geht ja leider
 
Hi,

wenn Du den Inhalt der Variable direkt nach dem onLoad-Handler ausgeben willst, ist klar, dass dort nicht steht: Flash arbeitet beim Laden von Daten asychron, sprich: es wird nicht gewartet, bis die Daten geladen sind. In Deinem Beispiel notierst Du eine Funktion und gibtst dann eine undefinierte Variable aus, die erst gesetzt wird, wenn diese Funktion tatsächlich aufgerufen wird. Wann das der Fall ist, hängt zum einen davon ab, wann Du die entsprechende load-Aktion aufrufst und zum anderen, wie lange es dauert, bis die Daten tatsächlich geladen sind. ;)

Du wirst nicht umhin kommen, den weiteren Zugriff auf die geladenen Daten aus dem onLoad-Handler zu starten.

Gruß
.
 
Aja das erklärt einiges, habs jetzt so gelöst das ich einen frame weiter spring und dann da die Sachen mache die ich vor hatte. Vielleicht unpraktisch aber es geht :)
 
... schön, aber was machst Du, wenn das Laden länger als einen Frame dauert?

Sinn des asynchronen Ladens ist ja, dass Du unabhängig von der Ladedauer bist:
Code:
var foo = new WasAuchImmerLoader();

foo.onLoad = function() {
    // geladen!
    var bar = this.sonstwas;
    _root.gotoAndPlay("nach_dem_laden");<-- hier weitermachen!
}

foo.load("irgendwas");

// mach so lange was Du willst, z.B. eine Preload-Animation.:
this.onEnterFrame = function() {
    zeigeLadeani();
}

Gruß
.
 
Zurück