Variablen dynamsich laden - Zugriff (LoadVars)

B

bluewing

Hallo,

nach gründlichem Lesen von Beiträgen und der Flashhilfe bin ich immer noch auf keinen grünen Zweig gekommen, wie ich auf Variablen zugreifen kann, die dynamsich geladen werden.

PHP:
//Variablen laden
varobj = new LoadVars();
varobj.load("referenzen/referenzen.txt"); 
if (varobj.loaded = true){
	test1_txt.text = "sucess";
}
test2_txt.text = ref1;

das test1-Textfeld meldet sucess, das test2-Textfeld meldet leider immer "undefined".
 
Hi,

die Daten stehen erst zur Verfügung, wenn sie tatsächlich geladen sind (Du versuchst mit Deinem Script sofort darauf zuzugreifen).

Die Methode LoadVars.onload hilft Dir dabei:
PHP:
varobj = new LoadVars();
varobj.onLoad = function(success) {
    if (success) {
        test1_txt.text = "sucess";
        test2_txt.text = this.ref1;
    } else {
        test1_txt.text = "fehlgeschlagen";
    }
}
varobj.load("referenzen/referenzen.txt");

Gruß

P.S.:
Code:
if (varobj.loaded = true){
Das ist bestenfalls eine Zuweisung, kein Vergleich (Vergleiche werden mit "==" notiert). Zudem wird diese Zeile nur genau einmal (direkt nach der load-Aktion) aufgerufen, und gibt bestenfalls "false" zurück, wenn noch nichts geladen ist. Flash (Ereignisorientiert!) wartet nicht mit der Abarbeitung des Scriptes, bis irgendwelche LoadVars-Objekte zuende geladen haben. ;)
.
 
Vielen Dank für die schnelle Antwort, klappt alles. Die Variable "ref1" wird nun angezeigt. Nur habe ich mein Problem undeutlich beschrieben. Ich möchte im gesamten Actionscript auf die Variablen aus "referenzen.txt" zugreifen und habe nach Einfügen des Codes von Datic folgendes probiert:

- test3_txt.text = varobj.ref2;
- test3_txt.text = this.ref2;
- test3_txt.text = ref2;

was aber alles zu "undefined" führt. Ich hoffe, ihr könnt mir helfen. Ich verstehe die Zugriffe auf das LoadVars object einfach nicht...
 
Ok, habe per Zufall einen Weg aus der Misere (siehe obere Threads) gefunden.

Die Lösung liegt darin, einen unsichtbaren Preloader zu basteln, der wie folgend funktioniert:

PHP:
//Variablen laden
varcont = new LoadVars();
varcont.load("referenzen/referenzen.txt");
var bl = varcont.getBytesLoaded();
var bt = varcont.getBytesTotal;
if (bl<bt){
	gotoAndPlay(2);
} else if (bl == bt){
	gotoAndPlay(3);
}

in Frame2 steht:

PHP:
gotoAndPlay(1);

in Frame 3 befindet sich der eigentliche Film. Diesen Lösungsansatz habe ich im Forum bisher noch nicht gefunden und denke, dass er sehr einfach und hilfreich ist.

Gruß,

bluewing
 
Hi,

wenn Du so an die Sache rangehst, funktioniert das sicher problemlos. Idealerweise baut man Flashanwendungen allerdings ereignisorientiert auf; in Deinem Fall so ,dass die Objekte, die Deine geladenen Daten verwenden von LoadVars.onLoad benachrichtigt werden (und die Werte ggf. übergeben bekommen). ;)

Gruß
.
 
Zurück