I den här snabba tipsen visar jag hur du lagrar och får åtkomst till SharedObjects (Flash-ekvivalenten av cookies) så att du kan spara och ladda användardata mellan sessioner.
Låt oss ta en titt på det slutliga resultatet vi ska arbeta för:
Observera att introanimationen inte spelas om du redan har sett den en gång. Försök logga in (du kan använda vilket användarnamn / lösenord som helst) och sedan uppdatera webbläsaren utan att logga ut. Dina uppgifter kommer automatiskt att anges.
För att återställa data som sparats i SharedObject loggar du in och loggar ut igen.
Det första du behöver göra är att hämta källfilerna för den här handledningen. Eftersom denna handledning är ett snabbt tips kommer jag att hoppa över layouten. När du har hämtat filerna, öppna filen 'sharedObject.fla'. När filen laddas upp märker du att vi har tre nyckelbilder på tidslinjen.
Den första keyframen rymmer introanimationen. Animationen är bara en filmklipp med några rörelse tweens och en "stop" -aktivitet i slutet.
Den andra keyframe är inloggningsskärmen. Här kan en användare skriva in sin information. De kan välja att spara det eller inte. Om användaren klickar på knappen "Watch animation again" kommer de att tas tillbaka till den första nyckelramen. Dessutom kommer det SharedObject som vi ska ställa in att raderas.
Den sista keyframen innehåller en enkel RSS-läsare av ActiveTuts + -matningen. Om användaren klickar på knappen "Logga ut" tas de tillbaka till den andra keyframen och SharedObject kommer att rensas. Det innebär att användaren kommer att se introanimationen nästa gång de besöker webbplatsen.
Skapa en ny "ActionScript" -fil och spara den i samma mapp som "sharedObject.fla." Ge filen ett namn på "sharedObject.as." Därefter länka du Flash-filen och ActionScript-filen tillsammans i Egenskaper-panelen. För en mer djupgående titt på hur du ställer in dokumentklassen, besök den här andra snabba tipsen.
Här är de importdeklarationer som vi ska använda för den här filen. Eftersom vi använder mer än en ram på tidslinjen måste vi utvidga den som en MovieClip.
paket import flash.display.MovieClip; importera flash.display.SimpleButton; importera flash.events.Event; importera flash.events.MouseEvent; importera flash.net.SharedObject; importera flash.net.URLLoader; importera flash.text.TextField; public class sharedObject utökar MovieClip public function sharedObject ()
Så här säger ActionScript 3.0-språkreferensen om SharedObjects:
Classen SharedObject används för att läsa och lagra begränsade datamängder på en användares dator eller på en server. Delade objekt erbjuder realtidsdata mellan flera klient SWF-filer och objekt som är kvarhållna på den lokala datorn eller fjärrservern. Lokala delade objekt liknar webbläsarkakor och fjärranslutna delade objekt liknar realtidsdataöverföringsenheter. För att använda fjärranslutna delade objekt behöver du Adobe Flash Media Server.
I det här exemplet arbetar vi bara med lokala delade objekt. För att komma igång med SharedObjects skapar vi en variabel som heter "shared" och kasta den som ett SharedObject. Därefter använder vi "getLocal" -metoden i SharedObject-klassen. Jag gav det ett exempel på "exempel", men du kan ge det något namn du gillar.
När vi har initierat vårt SharedObject, kallar vi funktionen "init". I "init" -funktionen stoppar vi huvudtidslinjen. Vi kontrollerar också SharedObject för att se om intro-animationen har tittats. Om den har, skickar vi användaren till bild 2. Om "tittat" -egenskapen på "Data" -objektet för vårt SharedObject inte har ställts in spelar vi animationen och lyssnar på den för att slutföra med en ENTER_FRAME-händelse.
paket import flash.display.MovieClip; importera flash.display.SimpleButton; importera flash.events.Event; importera flash.events.MouseEvent; importera flash.net.SharedObject; importera flash.net.URLLoader; importera flash.text.TextField; public class sharedObject utökar MovieClip private var shared: SharedObject; offentlig funktion sharedObject () shared = SharedObject.getLocal ("example"); i det(); privatfunktion init (): void this.stop (); om (shared.data.watched === true) this.gotoAndStop (2); frame2handler (); annars this.addEventListener (Event.ENTER_FRAME, onEnter);
I funktionen "onEnter" lyssnar vi på om animationen har nått slutet av dess ramar. När det är så tar vi bort händelseläsenaren, går till den andra keyframen på huvudtidslinjen och kallar funktionen "frame2handler". Vi ställer också egenskapen "tittad" på "Data" -objektet för SharedObject. Eftersom "data" är ett objekt kan vi tilldela något värde till det. Jag använde just "tittat" som en indikator för introanimationen.
Därefter kallar vi "flush" -metoden i SharedObject. Detta sparar SharedObject till lämplig lokal fil och är tillgänglig för senare användning.
privat funktion onEnter (händelse: Händelse): void if (animation.currentFrame === animation.totalFrames) this.removeEventListener (Event.ENTER_FRAME, onEnter); this.gotoAndStop (2); frame2handler (); shared.data.watched = true; shared.flush ();
I funktionen "frame2handler" märker du att jag kallar "addFrameScript" -metoden. Med hjälp av denna metod kan vi komma åt olika MovieClips i olika delar av tidslinjen. 'addFrameScript' är nollbaserad, så för att få tillgång till MovieClips på ram 2, skickar vi den 1. Vi skickar den också en inline-funktion för att hantera vilken logik som helst på ram 2. Inom den funktionen kontrollerar vi om SharedObject har inställningarna "User," lösenord "och" remember ". Om de är, fyller vi i textfälten med lämplig information.
privat funktion frame2handler (): void this.addFrameScript (1, funktion () if shared.data.user! = null && shared.data.password! = null) user.text = shared.data.user; lösenord .text = shared.data.password; remember.selected = shared.data.remember; remember.label = "Kom ihåg mig"; enter.addEventListener (MouseEvent.CLICK, onClick); watcher.addEventListener (MouseEvent.CLICK, onClick) ;);
Eftersom appen är liten kommer vi att hantera alla klick med en funktion. Inuti funktionen "onClick" kontrollerar vi namnet på målet för händelsen. Om namnet är "enter" kontrollerar vi sedan om användaren ville ha sin inloggningsinformation ihågkommen. Om de gjorde så lägger vi helt enkelt till fler värden till "data" -objektet. Om inte, kommer vi att radera dessa värden från objektet "data". Därefter skickar vi användaren till ram 3 och kallar 'frame3handler'. Om användaren har klickat på "watcher" -knappen tar vi bort värdet som är associerat med intro-animationen. Användaren återgår sedan till den första ramen, och vi kallar init-funktionen med 'addFrameScript'. Slutligen, i den tredje ramen, om användaren klickar på "klarare" -knappen, raderar vi objektdatobjektet och alla värdena på SharedObject raderas. Användaren skickas sedan tillbaka till ram 2 och ingen av deras uppgifter behålls.
privat funktion onClick (händelse: MouseEvent): void switch (event.target.name) case "enter": om (remember.selected) shared.data.user = user.text; shared.data.password = password.text; shared.data.remember = remember.selected; shared.flush (); annat ta bort shared.data.user; radera shared.data.password; this.gotoAndStop (3); frame3handler (); ha sönder; fall "watcher": radera shared.data.watched; this.gotoAndStop (1); this.addFrameScript (0, funktion () init ();); ha sönder; fallet "klarare": shared.clear (); this.gotoAndStop (2); ha sönder;
I funktionen "frame3handler" använder vi "addFrameScript" igen för att komma åt MovieClips på bild 3. Inuti inline-funktionen laddar vi RSS-flödet och använder list- och textArea-komponenterna för att visa informationen.
privat funktion frame3handler (): void this.addFrameScript (2, funktion () clearer.addEventListener (MouseEvent.CLICK, onClick); var url: URLLoader = ny URLLoader (); url.addEventListener (Event.COMPLETE, function var xml: XML = ny XML (url.data); var xmlList: XMLList = xml ... objekt; för (var i: int = 0; i
Slutsats
Det finns massor av applikationer för SharedObjects. Kolla bara ut någon sida som Pandora eller spel webbplatser som på vuxna simma. Det bästa sättet att lära sig är dock att experimentera själv och, givetvis, prenumerera på Tuts+.
Tack för att du följer med!