Eingaben speichern / Sessions

Guido

New member
Hallo zusammen!

Kann ich mit Flash Benutzereingaben "speichern" und später wieder darauf zugreifen? Es reicht völlig für die Dauer des Films, nicht darüber hinaus! Hat Flash sowas wie Sessions?

Warum?
Lernende sollen einer virtuellen Firma und deren Mitarbeitern Namen vergeben und diese Namen sollen dann durch die gesamte Lerneinheit beibehalten werden.

Ade und Danke im Voraus
Guido
 
Also Sessions hat es nicht direkt, aber Du kannst ja einfach einen MC oder ein globales Object definieren, in welches Du die Daten reinschreibst.
Also z.B. so

_global.myData = new Object ();
_global.myData.Name = "Albu";
_global.myData.Firma = "KewBee";

könnte sogar auch gehen:
myData.Name = "Albu";
myData.Firma = "KewBee";


Oder Du verwendest Flash Cookies, d.h. Local Shared Objects, in diese kannst Du Daten ablegen, und zu einem späteren Zeitpunk wieder abrufen. Dies geht dann auch noch über die Laufzeit einer "Sitzung" hinaus, d.h. bei Neustart der Anwendung sind die Daten trotzdem noch verfügbar.
 
Bahnhof!

Hohoho! Ruhig Brauner!
Jetzt nochmal bitte gaaanz langsam! Bin zwar nicht blond, aber das war gerade zuviel! Da schlug Nostralbus zu!

Wie kann ich bzw. der Benutzer die Daten denn in ein globales Objekt reinschreiben und vor allem wie mache ich Flash den Unterschied zwischen einem globalen und einem lokalen Objekt klar?

Die local shared objects sind Browser-, oder was bezogen? Also wo werden sie gespeichert? Wie lege ich die ab und kann ich sie wieder löschen, wenn zwei Lernende hintereinander an dem selben Rechner arbeiten z.B.
 
achso die Sachen gehen nur mit MX, für 5 und kleiner mußt Du Dir einen MC anlegen, der die Daten speichert.


_global ist ein fester Bestandteil / Container für alle global verfügbaren Objekte / Daten / Variablen. Du kannst ihn erweitern in dem Du einfach eine neue Variable definierst. Also z.B: _global.test = 10; schon gibt es in _global die Variable test, die den Wert 10 enthält. test kannst Du dann von überall her abrufen (und setzen), es sei denn Du definierst eine lokale Variable test.
Wenn Du mehr als eine Variable speichern willst, dann bietet es sich an diese zunächst in ein eigenes Objekt zu speichern, um den "globalen Variablenspeicher" nicht durch tausende neue Variablen zu verunreinigen (da könnten schließlich irgendwann Namenskonflikte entstehen).
Ein eigenes Objekt legt man dann so an:
myData = new Object ();
diesem kann dann einfach neue Variablen zuordnen:
myData.Name = formular_mc.textfeld_txt.text;
myData.Firma = "test";
myData.blah = "test";
usw.
Durch _global.myData = new Object (); liegt myData eben global und für alle ohne Pfandangaben verfügbar im Speicher rum.

local SOs sind rechnerbezogen und liegen unter dem Profil des Benutzers auf der Platte (Dokumente und Einstellungen\<username>\Anwendungsdaten\Macormedia\Flash Player\<domain>\<appname>\*.sol

schreiben:
myObj = SharedObject.getLocal("objname");
myObj.data.Name = "Albu";
myObj.data.blah = "Albu";
myObj.flush();

Lesen:
objIn = SharedObject.getLocal("objname");
txtNickname.text = objIn.data.Name;

"objname" muß in beiden Fällen übereinstimmen ( Du kannst natürlich auch mehrere objnames verwenden, wenn Du die Daten logisch trennen willst


Wenn das alles ein bißchen kompliziert aussieht, dann liegt das vielleicht daran, daß das hier schon ein bißchen in die OOP reingeht, was auf manche Leute verwirrend wirkt. :)
Aber letztendlich ist alles ganz einfach. OOP in Actionscript funktioniert fast genauso wie OOP in Javascript, und JS können wir doch alle, oder?? ;)
 
Erstmal vielen Dank für die Erläuterungen!

MX habe ich gerade bestellt, also das ist geklärt.

Ich definiere also gleich im ersten Frame in irgendeiner Ebene (z.B. Aktionen) die Variablen? Wenn es dann soweit ist überschreiben die User die Variablen und haben ab dann die neuen Werte?

BTW: Jeder User hat eine eigene Kopie des Flashs, richtig? Von da können keine Konflikte kommen, oder?

OOP ist doch logisch, da habe ich eher Schwierigkeiten mit JS... wo andere sich bei PHP fragen "Wieso muss ein $ vor die Variablen?" frage ich mich "Wieso kommt bei JS kein $ vor Variablen?" - sowas dummes aber auch!

Was daran so kompliziert aussieht ist, das ich mich bis vor ein paar Tagen nicht mit Flash beschäftigt hatte. Jetzt muss ichs und soll am besten gleich eine SUPER-DUPER-Anwendung bei raus bekommen - neben der Erstellung der Inhalte ;)
 
Guido schrieb:
Ich definiere also gleich im ersten Frame in irgendeiner Ebene (z.B. Aktionen) die Variablen? Wenn es dann soweit ist überschreiben die User die Variablen und haben ab dann die neuen Werte?
Yes! Denn mindestens die Zeile myData = new Object () sollte nur einmal vorkommen, denn sonst überschreibt man ja die Werte jedesmal, obwohl bei einem Clear Button soll vielleicht alles überschrieben werden...

Guido schrieb:
BTW: Jeder User hat eine eigene Kopie des Flashs, richtig? Von da können keine Konflikte kommen, oder?
eigentlich nicht, denn jeder hat ja auch sein eigenes Profil und damit seine eigenen Flash Cookie Verzeichnisse.

Guido schrieb:
OOP ist doch logisch, da habe ich eher Schwierigkeiten mit JS... wo andere sich bei PHP fragen "Wieso muss ein $ vor die Variablen?" frage ich mich "Wieso kommt bei JS kein $ vor Variablen?" - sowas dummes aber auch!
Das $ ist ja nur eine Unart von PHP und Perl, andere Programmiersprachen kennen / brauchen sowas ja nicht.

Guido schrieb:
Was daran so kompliziert aussieht ist, das ich mich bis vor ein paar Tagen nicht mit Flash beschäftigt hatte. Jetzt muss ichs und soll am besten gleich eine SUPER-DUPER-Anwendung bei raus bekommen - neben der Erstellung der Inhalte ;)
Naja wer JS kann für den ist AS ja kein Problem.... lediglich die etwas stärkere Ausrichtung auf OOP, die sich nicht nur auf den Code, sondern auch auf die Struktur der MCs auswirkt ist für viele eine Hürde. Viele Probleme kann man dadurch lösen, daß man seine MCs geschickt schachtelt und anordnet, denn viele Probleme entstehen erst durchs falsche Schachteln und dadurch daß man sich nicht vorher überlegt hat, wie man die Lösung angeht.
Das Konzept einer Timeline in jedem MC ist auch ein zusätzlicher Faktor, der Flash einzigartig macht, aber auch das will gelernt sein.... :)
 
Original geschrieben von Albu

Das $ ist ja nur eine Unart von PHP und Perl, andere Programmiersprachen kennen / brauchen sowas ja nicht.
Unart? Ich finde das herrlich übersichtlich! Genau das war es was mir immer Probleme bei JS gemacht hat - ich habe mich nicht zurecht gefunden unter anderem deswegen.

Original geschrieben von Albu

Viele Probleme kann man dadurch lösen, daß man seine MCs geschickt schachtelt und anordnet, denn viele Probleme entstehen erst durchs falsche Schachteln und dadurch daß man sich nicht vorher überlegt hat, wie man die Lösung angeht.
Gut, das vorher denken habe ich glaube ich beim erstellen von PHP-Klassen gelernt ;) und wieder bereut es doch nicht perfekt gemacht zu haben ;) Aber hast du für die Verschachtelung vielleicht nochmal ein paar Guidelines, oder Tips und Tricks was man beachten sollte, wie man vorgehen sollte? Was sollte man vermeiden, was hat sich als sinnvol gezeigt usw.


Original geschrieben von Albu

Das Konzept einer Timeline in jedem MC ist auch ein zusätzlicher Faktor, der Flash einzigartig macht, aber auch das will gelernt sein.... :)
Ah ja, dazu hätte ich gerade auch noch 'ne Frage:
Ich kann - wenn ich es bisher richtig verstanden habe - einen MC mit bspw. 100 Frames haben. In diesem rufe ich andere MCs auf die sogar weit mehr als eben diese 100 Frames haben, da sie innerhalb dieses ersten laufen?

Ade
Guido
 
Guido schrieb:
Unart? Ich finde das herrlich übersichtlich! Genau das war es was mir immer Probleme bei JS gemacht hat - ich habe mich nicht zurecht gefunden unter anderem deswegen.
Unart, weil ich ein Zeichen mehr tippen muß, welches völlig überflüssig ist. In C oder C++ muß ich auch sehen, daß ich nix durcheinander bring, also kann das auch bei PHP so sein. Allerdings hat PHP natürlich ein Problem, weil es ja nicht Compiliert sondern interpretiert wird, aber andere Sprachen kriegen das ja auch hin. Ich denke das ist einfach nur ein Überbleibsel aus Perl, wo das ja noch schlimmer ist.


Guido schrieb:
Gut, das vorher denken habe ich glaube ich beim erstellen von PHP-Klassen gelernt ;) und wieder bereut es doch nicht perfekt gemacht zu haben ;) Aber hast du für die Verschachtelung vielleicht nochmal ein paar Guidelines, oder Tips und Tricks was man beachten sollte, wie man vorgehen sollte? Was sollte man vermeiden, was hat sich als sinnvol gezeigt usw.
den Link kennst Du ja schon: http://forum.jswelt.de/showthread.php?s=&threadid=11771
und spontan fällt mir da jetzt nix weiter mehr ein, außerdem hängt es teilweise sehr stark vom Problem ab, welche Strategie oder welches Design das geschickteste ist.

Guido schrieb:
Ah ja, dazu hätte ich gerade auch noch 'ne Frage:
Ich kann - wenn ich es bisher richtig verstanden habe - einen MC mit bspw. 100 Frames haben. In diesem rufe ich andere MCs auf die sogar weit mehr als eben diese 100 Frames haben, da sie innerhalb dieses ersten laufen?
Jeder MC ist ein Objekt und als solches kapselt es seine Funktion. Von daher kann ein MC mit 10 Frames 50 MCs mit 1000 Frames enthalten und es juckt keinen. Außer die MCs sollen mit einerander interagieren, dann muß man eben mit Nachrichten, Events oder ähnlichem arbeiten.
 
Zurück
Oben