In diesem Schnelltipp zeige ich Ihnen, wie Sie SharedObjects (das Flash-Äquivalent von Cookies) speichern und darauf zugreifen, damit Sie Benutzerdaten zwischen Sitzungen speichern und laden können.
Werfen wir einen Blick auf das Endergebnis, auf das wir hinarbeiten:
Beachten Sie, dass die Intro-Animation nicht abgespielt wird, wenn Sie sie bereits einmal gesehen haben. Versuchen Sie, sich anzumelden (Sie können eine beliebige Kombination aus Benutzername und Kennwort verwenden), und aktualisieren Sie dann den Browser, ohne sich abzumelden. Ihre Daten werden automatisch eingegeben.
Um die im SharedObject gespeicherten Daten zurückzusetzen, melden Sie sich an und dann wieder ab.
Als erstes müssen Sie die Quelldateien für dieses Tutorial herunterladen. Da dieses Tutorial ein schneller Tipp ist, überspringe ich die Schritte des Layouts. Wenn Sie die Dateien heruntergeladen haben, öffnen Sie die Datei 'sharedObject.fla'. Wenn die Datei geladen ist, werden Sie feststellen, dass sich auf der Timeline drei Keyframes befinden.
Der erste Keyframe enthält die Intro-Animation. Die Animation ist nur ein Movieclip mit Bewegungs-Tweens und einer Stop-Aktion am Ende.
Der zweite Keyframe ist der Anmeldebildschirm. Hier kann ein Benutzer seine Informationen eingeben. Sie können wählen, ob Sie es speichern möchten oder nicht. Wenn der Benutzer auf die Schaltfläche "Animation erneut anzeigen" klickt, werden diese zum ersten Keyframe zurückgeführt. Das SharedObject, das wir festlegen, wird ebenfalls gelöscht.
Der letzte Keyframe enthält einen einfachen RSS-Reader des ActiveTuts + -Feeds. Wenn der Benutzer auf die Schaltfläche "Abmelden" klickt, wird er zum zweiten Keyframe zurückgeführt und das SharedObject wird gelöscht. Dies bedeutet, dass der Benutzer die Intro-Animation beim nächsten Besuch der Website anzeigt.
Erstellen Sie eine neue "ActionScript" -Datei und speichern Sie sie im selben Ordner wie "sharedObject.fla". Geben Sie der Datei den Namen 'sharedObject.as'. Verknüpfen Sie als Nächstes die Flash-Datei und die ActionScript-Datei im Eigenschaftenfenster. Weitere Informationen zum Einrichten der Document-Klasse finden Sie in diesem anderen Quick Tip.
Hier sind die Import-Anweisungen, die wir für diese Datei verwenden werden. Da wir mehr als einen Frame der Timeline verwenden, müssen wir ihn als MovieClip erweitern.
package import flash.display.MovieClip; import flash.display.SimpleButton; import flash.events.Event; import flash.events.MouseEvent; import flash.net.SharedObject; import flash.net.URLLoader; import flash.text.TextField; public class sharedObject erweitert MovieClip öffentliche Funktion sharedObject ()
Das ActionScript 3.0-Referenzhandbuch sagt Folgendes über SharedObjects aus:
Die SharedObject-Klasse wird verwendet, um begrenzte Datenmengen auf dem Computer eines Benutzers oder auf einem Server zu lesen und zu speichern. Gemeinsam genutzte Objekte ermöglichen den Datenaustausch in Echtzeit zwischen mehreren Client-SWF-Dateien und Objekten, die auf dem lokalen Computer oder Remote-Server persistent sind. Lokale gemeinsam genutzte Objekte ähneln Browser-Cookies, und gemeinsam genutzte Remote-Objekte ähneln Echtzeit-Datenübertragungsgeräten. Zur Verwendung von gemeinsam genutzten Remoteobjekten benötigen Sie Adobe Flash Media Server.
In diesem Beispiel arbeiten wir nur mit lokalen gemeinsam genutzten Objekten. Um mit SharedObjects beginnen zu können, erstellen wir eine Variable mit dem Namen 'shared' und wandeln sie als SharedObject um. Als Nächstes verwenden wir die 'getLocal'-Methode der SharedObject-Klasse. Ich habe ihm den Namen "Beispiel" gegeben, aber Sie können ihm einen beliebigen Namen geben.
Nachdem wir unser SharedObject initialisiert haben, rufen wir die 'init'-Funktion auf. In der 'init'-Funktion stoppen wir die Hauptzeitleiste. Wir überprüfen auch das SharedObject, um zu sehen, ob die Intro-Animation angesehen wurde. Wenn dies der Fall ist, senden wir den Benutzer zu Bild 2. Wenn die Eigenschaft "watching" für das Objekt "data" unseres SharedObject nicht festgelegt wurde, spielen wir die Animation ab und warten darauf, dass sie mit einem Ereignis ENTER_FRAME beendet wird.
package import flash.display.MovieClip; import flash.display.SimpleButton; import flash.events.Event; import flash.events.MouseEvent; import flash.net.SharedObject; import flash.net.URLLoader; import flash.text.TextField; Öffentliche Klasse sharedObject erweitert MovieClip private var shared: SharedObject; öffentliche Funktion sharedObject () shared = SharedObject.getLocal ("example"); drin(); private Funktion init (): void this.stop (); if (shared.data.watched === true) this.gotoAndStop (2); frame2handler (); else this.addEventListener (Event.ENTER_FRAME, onEnter);
In der Funktion 'onEnter' hören wir, ob die Animation das Ende ihrer Frames erreicht hat. Sobald dies der Fall ist, entfernen wir den Ereignis-Listener, gehen zum zweiten Keyframe in der Hauptzeitleiste und rufen die Funktion 'frame2handler' auf. Wir setzen auch die Eigenschaft 'watching' für das 'data'-Objekt des SharedObject. Da "Daten" ein Objekt ist, können wir ihm einen beliebigen Wert zuweisen. Ich habe gerade "watch" als Indikator für die Intro-Animation verwendet.
Als Nächstes rufen wir die 'Flush'-Methode des SharedObject auf. Dadurch wird das SharedObject in der entsprechenden lokalen Datei gespeichert und kann später verwendet werden.
private Funktion onEnter (Ereignis: Ereignis): void if (animation.currentFrame === animation.totalFrames) this.removeEventListener (Event.ENTER_FRAME, onEnter); this.gotoAndStop (2); frame2handler (); shared.data.watched = true; shared.flush ();
In der 'frame2handler'-Funktion werden Sie feststellen, dass ich die' addFrameScript'-Methode aufrufe. Mit dieser Methode können wir auf verschiedene MovieClips in verschiedenen Teilen der Timeline zugreifen. 'addFrameScript' ist nullbasiert. Um auf die MovieClips in Bild 2 zuzugreifen, übergeben wir es 1. Außerdem übergeben wir eine Inline-Funktion, um alle Logik in Bild 2 zu verarbeiten. Innerhalb dieser Funktion überprüfen wir, ob das Für SharedObject sind die Werte für "Benutzer", "Kennwort" und "Merken" festgelegt. Wenn dies der Fall ist, füllen wir die Textfelder mit den entsprechenden Informationen.
private Funktion frame2handler (): void this.addFrameScript (1, function () if (shared.data.user! = null && shared.data.password! = null) user.text = shared.data.user; Kennwort; .text = shared.data.password; remember.selected = shared.data.remember; remember.label = "Remember me"; enter.addEventListener (MouseEvent.CLICK, onClick); watcher.addEventListener (MouseEvent.CLICK, onClick) ;);
Da die App klein ist, werden wir alle Klicks mit einer Funktion erledigen. Innerhalb der 'onClick'-Funktion überprüfen wir den Namen des Ziels des Ereignisses. Wenn der Name "Eingabe" lautet, prüfen wir, ob der Benutzer wünscht, dass seine Anmeldeinformationen gespeichert werden. Wenn dies der Fall ist, fügen wir dem 'data'-Objekt einfach weitere Werte hinzu. Wenn nicht, löschen wir diese Werte aus dem Datenobjekt. Danach schicken wir den Benutzer auf Frame 3 und rufen den 'frame3handler' auf. Wenn der Benutzer auf die Schaltfläche "Watcher" geklickt hat, löschen wir den mit der Intro-Animation verknüpften Wert. Der Benutzer kehrt dann zum ersten Frame zurück und wir rufen die 'init'-Funktion mit' addFrameScript 'auf. Wenn der Benutzer im dritten Frame auf die Schaltfläche "clearer" klickt, wird das "data" -Objekt gelöscht, und alle Werte des SharedObject werden gelöscht. Der Benutzer wird dann zu Frame 2 zurückgeschickt und keine seiner Informationen bleibt erhalten.
private Funktion onClick (Ereignis: MouseEvent): void switch (event.target.name) Fall "enter": if (remember.selected) shared.data.user = user.text; shared.data.password = password.text; shared.data.remember = remember.selected; shared.flush (); else delete shared.data.user; delete shared.data.password löschen; this.gotoAndStop (3); frame3handler (); brechen; Fall "watcher": delete shared.data.watched; this.gotoAndStop (1); this.addFrameScript (0, function () init ();); brechen; Fall "klarer": shared.clear (); this.gotoAndStop (2); brechen;
In der Funktion 'frame3handler' verwenden wir erneut 'addFrameScript', um auf die MovieClips in Bild 3 zuzugreifen. Innerhalb der Inline-Funktion laden wir den RSS-Feed und verwenden die Komponenten List und TextArea, um die Informationen anzuzeigen.
private Funktion frame3handler (): void this.addFrameScript (2, function () clearer.addEventListener (MouseEvent.CLICK, onClick); var url: URLLoader = neuer URLLoader (); url.addEventListener (event.COMPLETE, function () var xml: XML = neues XML (url.data); var xmlList: XMLList = xml… item; für (var i: int = 0; i
Fazit
Für SharedObjects gibt es eine Vielzahl von Anwendungen. Besuchen Sie einfach jede Website wie Pandora oder Spiele-Websites wie Adult Swim. Am besten lernen Sie jedoch, sich selbst zu experimentieren und natürlich Tuts zu abonnieren+.
Danke fürs Mitmachen!