loadVariables Flash4->Flash6

Lloyd

Erfahrenes Mitglied
Hi,
nun ists schon einen geschlagenen Tag, dass ich versuch das Gästebuch von Matthias Kannengiesser in Flash MX einzubinden. Es wurde in Flash 4 geschrieben. Die PHP-Dateien sind sicher in Ordnung.
Bei mir liegt es jetzt in einem eigenen mc.
Das letzte Problem, wo ich denke daran hängts, ist, dass ich Schwierigkeiten
hab die Variablen zu laden.
Im Original ist alles (laden/speichern) mit loadVariablesNum("load.php3", 0,"GET"); realisiert. Nun hab hab ich bei Flash 6 (MX) versucht mal den obrigen Befehl, mal this.loadVariables("load.php3","GET"); zu verwenden.
Irgendwo hängts immer. Entweder beim Laden oder beim Speichern.

Könnte mir jemand den unterschied der beiden Befehle nahebringen?
Wird der eine in Flash4 der andere in Flash6 verwendet?
Wann verwende ich welchen, wie?
Wenn ich in einem mc was lade, ist doch das Level immer noch 0,gel?
Danke.
 
Hi,

loadVariablesNum lädt in eine Stufe (level) des Players, loadVariables in einen MovieClip (entweder explizit angegeben, oder in die Position, aus der die Aktion aufgerufen wurde). Die Frage ist also, wo Deine Variablen nach dem Empfangen zur Verfügung stehen, und wie diese abgefragt werden. Ein wenig mehr Code (z.B. die Stellen, in denen auf die Variablen zugegriffen wird), wäre hilfreich.

BTW: Wenn Du schon mit Flash 6 arbeitest, warum verwendest Du nicht gleich das LoadVars-Objekt (siehe Hilfe), das um einiges flexibler ist?

Gruß
.
 
Da gibts nicht viel mehr Code. Der ist eigentlich auch irrelevant. Aber trotzdem:

edit: was vielleicht noch interessant ist zu erwähnen:
Das Gästebuch liesst immer nur einen Eintrag und bei vorwärts oder rückwärts (s.u.)
wird der nächste gelesen.
Ich versuche erstmal das so zu implementieren, aber eigentlich möchte ich dann noch einen Schritt weiter gehen und gleichzeitig mehrere Einträge anzeigen lassen. /edit
PHP:
//Frame1:
this.loadVariables("load.php3","GET");
Frame30 bis Frame49:
Ab hier sind die dynamischen Textfelder (Variable=der Variable die von php-datei kommt)
zum einlesen der Gästebuchdaten.
Ausserdem ein button um zu Frame 50 (ab da ist der Schreiben-bereich) zu springen:
PHP:
on (release) {
	gotoAndStop(50);
}
Und ein vorwärtsbutton (springt zu Frame32) und ein rückwärtsbutton (springt zu Frame42.
PHP:
//Frame31:
gotoandPlay(30);

//Frame32:
if (Number(No) == Number(Nomax)) {
	No = "1";
	loadVariablesNum("loadid.php3", 0,"GET");
} else {
	No = Number(No)+1;
	loadVariablesNum("loadid.php3", 0,"GET");
}

//Frame36:
gotoAndPlay(30);

//Frame42:
if (Number(No) == 1) {
	gotoAndPlay(30);
} else {
	No = No-1;
	loadVariablesNum("loadid.php3", 0,"GET");
}

//Frame46:
gotoAndPlay(30);
Frame50:
Ab hier beginnt der Schreiben-bereich, zum Eintragen ins Gästebuch.
D.h. neue Textfelder. Neuer Button zu senden mit dem Code:
PHP:
on (release) {
	if (name eq "" or name eq "Dein Name") {
		txt_out = "Name Fehlt !";
	} else if (details eq "" or details eq "Hier den Kommentar") {
		txt_out = "Kommentar Fehlt !";
	} else {
		txt_out = "";
		play();
	}
}
on (keyPress "=") {
	stop();
}
on (keyPress "&") {
	stop();
}

//Frame51:
loadVariablesNum("input.php3", 0, "GET");

//Frame55:
stop();
gotoAndPlay(1);

Die grossen Framezwischenräume sind daher gewählt um die Verzögerung des Variablenladens abzufangen (bei 24 FPS). (Alles nur von Matthias Kannengiesser nachgebaut).
Interessant für mein Problem sind nur die loadVariable(Num)-Stellen.
Ich würde gern einheitlich einen Befehl nutzen.
Haben die beiden Befehle auch eine unterschiedliche "Arbeitsweise" beim Laden, oder ist es nur ein funktionaler Unterschied für den Programmierer?
Was hat das nun mit dem Level auf sich? Ist das ein virtuelles Konstrukt um *.swf auseinanderzuhalten, und hat somit nichts zu bedeuten bei "normalen" mc verschachtelungen?
Der loadVars-Befehl ist bei mir nicht dokumentiert, daher nehm ich an dass er nicht unterstützt wird.
Bin offen für alle Vorschläge. Danke.
 
Zuletzt bearbeitet von einem Moderator:
Hi,

Verwende bitte Code-Tags beim Posten von Code - das ist übersichtlicher (habs mal eben geändert).

Nun, loadVariablesNum ist m.E. veraltet - generell rate ich davon ab, mit Stufen zu arbeiten. Diese Stufen haben eigentlich nichts mit der Stapelreihenfolge der Clips zu tun - es ist vielmehr eine weitere interne Rangordnung in Flash (wie Stapelreihenfolge, Verschachtelung, Ebenen).

Wenn Deine Textfeldvariablen auf dem selben Clip liegen, wie Deine loadVariables-Aktion, sollte das eigentlich funktionieren - allerdings habe ich mit dieser recht alten Syntax wenig Erfahrung - so würde ich z.B. lieber onLoad-Handler implementieren, als mit Framezwischenräumen auf das Laden zu warten... versuch es doch einmal mit loadVariables statt this.loadVariables und lass Dir die Variablen mit trace-Aktionen ausgeben (bzw. wähle "Variablen anzeigen" im Debugger).

Wenn Du wirklich mit Flash 6 arbeitest, sollte es zu dem LoadVars-Objekt (Klasse, kein "Befehl") eine Hilfeseite geben, die in etwa so beginnt:

LoadVars-Klasse

Verfügbarkeit
Flash Player 6.

Beschreibung
Die LoadVars-Klasse stellt eine Alternative zur Funktion loadVariables() für die Übertragung von Variablen zwischen einer Flash-Anwendung und einem Server dar.

Generell würde ich Dir heutzutage empfehlen, das ganze Gästebuch mit zeitgemäßer Syntax und Struktur zu schreiben (keine Zeitleiste, Ereignishandler, LoadVars-Objekt), statt zu versuchen, ein Flash4-Script umzuschreiben - wenn loadVariablesNum funktioniert, sehe ich nicht unbedingt einen Grund, auf loadVariables (ebenfalls Flash4-Syntax) umzusteigen. ;)

Gruß
.
 
Oki, ich werd in Zukunft Code in Codebereiche schreiben.
Danke für die umfangreiche Antwort.
Jetzt kann ich die Sachen besser in meinem Hirn einordnen.

Du wirst nicht glauben was ich gefunden hab...LoadVars *gg*
Das steht aber in der Reference unter load(LoadVars), daher hab ich es auch nicht bemerkt. *Hmpf*
Ich werde mich in load(LoadVars) mal reinlesen. Obwohl ich die Reference etwas mager in den Ausführungen finde. Gibts da noch umfangreichere/ausführlichere Dokumentationen?
Im Netz findet man viel zu konkreten Problemen, aber ich möchte ja ein generelles Verständnis bekommen, zum Beispiel von der Arbeitsweise eines Befehls, mit ein paar tips und Tricks rundrum.
 
Tipp: Auch die Forumsuche nach "LoadVars" sollte etliche Threads zu Tage fördern, in denen die Arbeitsweise dieser Klassen umfangreich demonstriert wird.

Und: die Syntax "load(LoadVars)" habe ich noch nie gehört... wenn dann LoadVars.load(URL) :confused:

Gruß
.
 
Um nicht andere die das lesen auch noch zu verwirren, hier nochmal eine Richtigstellung.
Die Syntax ist myLoadVars.load(URL) aber in der Flash-Referenz steht dies unter dem Thema "load(LoadVars)" im Index.
 
Zurück