I denne Quick Tip viser jeg deg hvordan du lagrer og får tilgang til SharedObjects (Flash tilsvarende cookies), slik at du kan lagre og laste brukerdata mellom økter.
La oss se på det endelige resultatet vi vil jobbe for:
Merk at introanimasjonen ikke spilles hvis du allerede har sett den en gang. Prøv å logge inn (du kan bruke hvilket som helst brukernavn / passord kombinasjon) og deretter oppdatere nettleseren uten å logge ut. Dine detaljer blir automatisk angitt.
For å tilbakestille dataene som er lagret i SharedObject, logg inn og logg ut igjen.
Det første du må gjøre er å laste ned kildefilene for denne opplæringen. Siden denne opplæringen er et raskt tips, vil jeg hoppe over oppsettstrinnene. Når du har lastet ned filene, åpner du filen 'sharedObject.fla'. Når filen er lastet, vil du legge merke til at vi har tre nøkkelrammer på tidslinjen.
Den første keyframe inneholder introanimasjonen. Animasjonen er bare en filmklipp med noen bevegelses tweens og en "stopp" -aktivitet på slutten.
Den andre keyframe er påloggingsskjermen. Her kan en bruker skrive inn informasjonen sin. De kan velge å lagre det eller ikke. Hvis brukeren klikker knappen "Watch animation again", blir de tatt tilbake til den første keyframe. Også, den SharedObject som vi skal sette vil bli slettet.
Den siste keyframe inneholder en enkel RSS-leser av ActiveTuts + feed. Hvis brukeren klikker på "Logg ut" -knappen, blir de tatt tilbake til den andre keyframe, og SharedObject blir slettet. Dette betyr at brukeren vil se introanimasjonen neste gang de besøker nettstedet.
Opprett en ny 'ActionScript' -fil og lagre den i samme mappe som 'sharedObject.fla.' Gi filen et navn på 'sharedObject.as'. Deretter kobler du Flash-filen og ActionScript-filen sammen i Egenskaper-panelet. For en mer grundig titt på hvordan du konfigurerer Dokument-klassen, besøk denne andre raske tipsen.
Her er de importerte utsagnene som vi skal bruke for denne filen. Siden vi bruker mer enn en ramme på tidslinjen, må vi utvide den som en MovieClip.
pakke import flash.display.MovieClip; importer flash.display.SimpleButton; importere flash.events.Event; importer flash.events.MouseEvent; importer flash.net.SharedObject; importer flash.net.URLLoader; importer flash.text.TextField; offentlig klasse sharedObject utvider MovieClip offentlig funksjon sharedObject ()
Her er hva ActionScript 3.0-språkreferansen sier om SharedObjects:
Klassen SharedObject brukes til å lese og lagre begrensede mengder data på en brukers datamaskin eller på en server. Delt objekter gir sanntidsdatadeling mellom flere klient SWF-filer og objekter som er vedvarende på den lokale datamaskinen eller den eksterne serveren. Lokale delte objekter ligner nettleserkakene, og eksterne delte objekter ligner sanntids dataoverføringsenheter. Hvis du vil bruke eksterne delte objekter, trenger du Adobe Flash Media Server.
I dette eksemplet vil vi bare jobbe med lokale delte objekter. For å komme i gang med SharedObjects lager vi en variabel som heter "delt" og kaster den som et SharedObject. Deretter bruker vi "getLocal" -metoden i SharedObject-klassen. Jeg ga navnet et eksempel, men du kan gi det noe navn du liker.
Etter at vi har initialisert vårt SharedObject, kaller vi init-funksjonen. I "init" -funksjonen stopper vi hoved tidslinjen. Vi sjekker også SharedObject for å se om introanimasjonen er blitt sett. Hvis den har, sender vi brukeren til ramme 2. Hvis "overvåket" eiendom på "Data" -objektet til vårt SharedObject ikke er angitt, spiller vi animasjonen og lytter etter at den er ferdig med å bruke en ENTER_FRAME-hendelse.
pakke import flash.display.MovieClip; importer flash.display.SimpleButton; importere flash.events.Event; importer flash.events.MouseEvent; importer flash.net.SharedObject; importer flash.net.URLLoader; importer flash.text.TextField; offentlig klasse sharedObject utvider MovieClip private var delt: SharedObject; offentlig funksjon sharedObject () shared = SharedObject.getLocal ("example"); i det(); privat funksjon init (): void this.stop (); hvis (shared.data.watched === true) this.gotoAndStop (2); frame2handler (); annet this.addEventListener (Event.ENTER_FRAME, onEnter);
I "onEnter" -funksjonen hører vi om animasjonen har nådd slutten av rammene. Når den har, fjerner vi hendelseslytteren, går til den andre keyframe på hoved tidslinjen, og kaller funksjonen 'frame2handler'. Vi stiller også "watched" -egenskapen på "data" -objektet til SharedObject. Siden "data" er en gjenstand, kan vi tildele noen verdi til den. Jeg brukte nettopp 'sett' som en indikator for intro-animasjonen.
Deretter kaller vi "flush" -metoden til SharedObject. Dette vil lagre SharedObject til den aktuelle lokale filen og være tilgjengelig for senere bruk.
privat funksjon onEnter (event: Event): void if (animation.currentFrame === animation.totalFrames) this.removeEventListener (Event.ENTER_FRAME, onEnter); this.gotoAndStop (2); frame2handler (); shared.data.watched = true; shared.flush ();
I funksjonen 'frame2handler' vil du legge merke til at jeg ringer til 'addFrameScript' -metoden. Ved hjelp av denne metoden kan vi få tilgang til forskjellige MovieClips i ulike deler av tidslinjen. 'addFrameScript' er null basert, så for å få tilgang til MovieClips på ramme 2, sender vi den videre. Også, vi sender den en inline-funksjon for å håndtere logikk på ramme 2. Innenfor funksjonen kontrollerer vi om SharedObject har 'bruker', 'passord' og 'husk' verdier satt. Hvis de er, fyller vi inn tekstfeltene med riktig informasjon.
privat funksjon frame2handler (): void this.addFrameScript (1, funksjon () if shared.data.user! = null && shared.data.password! = null) user.text = shared.data.user; passord .text = shared.data.password; remember.selected = shared.data.remember; remember.label = "Husk meg"; enter.addEventListener (MouseEvent.CLICK, onClick); watcher.addEventListener (MouseEvent.CLICK, onClick) ;);
Siden appen er liten, skal vi håndtere alle klikkene med en funksjon. Inne i 'onClick' -funksjonen, sjekker vi navnet på målet for arrangementet. Hvis navnet er 'enter', kontrollerer vi da for å se om brukeren ønsket at innloggingsinformasjonen ble husket. Hvis de gjorde det, legger vi ganske enkelt flere verdier til "data" -objektet. Hvis ikke, vil vi slette disse verdiene fra data-objektet. Deretter sender vi brukeren til ramme 3 og kaller 'frame3handler'. Hvis brukeren har klikket på "watcher" -knappen, sletter vi verdien som er knyttet til introanimasjonen. Brukeren vender da tilbake til den første rammen, og vi kaller 'init'-funksjonen ved hjelp av' addFrameScript '. Endelig, i den tredje rammen, hvis brukeren klikker på "klarere" -knappen, fjerner vi data-objektet og alle verdiene til SharedObject blir slettet. Brukeren sendes deretter tilbake til ramme 2, og ingen av deres informasjon blir beholdt.
privat funksjon onClick (event: MouseEvent): void switch (event.target.name) case "enter": hvis (remember.selected) shared.data.user = user.text; shared.data.password = password.text; shared.data.remember = remember.selected; shared.flush (); annet slett shared.data.user; slett shared.data.password; this.gotoAndStop (3); frame3handler (); gå i stykker; case "watcher": slett shared.data.watched; this.gotoAndStop (1); this.addFrameScript (0, funksjon () init ();); gå i stykker; saken "klarere": shared.clear (); this.gotoAndStop (2); gå i stykker;
I funksjonen 'frame3handler' bruker vi 'addFrameScript' igjen for å få tilgang til MovieClips på rammen 3. Inne i inline-funksjonen laster vi inn RSS-feedet og bruker Liste og TextArea-komponentene for å vise informasjonen.
privat funksjon frame3handler (): void this.addFrameScript (2, funksjon () 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 ... element; for (var jeg: int = 0; i
Konklusjon
Det er massevis av applikasjoner for SharedObjects. Bare sjekk ut hvilket som helst nettsted som Pandora eller spill nettsteder som på Adult Swim. Den beste måten å lære på er imidlertid å eksperimentere selv og, selvfølgelig, abonnere på Tuts+.
Takk for at du følger med!