In questo suggerimento rapido, ti mostrerò come memorizzare e accedere a SharedObjects (l'equivalente Flash dei cookie) in modo che tu possa salvare e caricare i dati utente tra le sessioni.
Diamo un'occhiata al risultato finale su cui lavoreremo:
Nota che l'animazione di introduzione non viene riprodotta se l'hai già vista una volta. Prova ad accedere (puoi utilizzare qualsiasi combinazione nome utente / password) e quindi aggiornare il browser senza disconnettersi. I tuoi dati verranno automaticamente inseriti.
Per ripristinare i dati salvati in SharedObject, accedere e quindi uscire di nuovo.
La prima cosa da fare è scaricare i file sorgente per questo tutorial. Poiché questo tutorial è un suggerimento veloce, salterò i passaggi del layout. Una volta scaricati i file, apri il file "sharedObject.fla". Quando il file viene caricato, noterai che abbiamo tre fotogrammi chiave sulla timeline.
Il primo fotogramma chiave contiene l'animazione di introduzione. L'animazione è solo un Movie Clip con alcune interpolazioni di movimento e un'azione di "fine" alla fine.
Il secondo fotogramma chiave è la schermata di accesso. Qui un utente può inserire le proprie informazioni. Possono scegliere di salvarlo o meno. Se l'utente fa clic sul pulsante "Guarda di nuovo l'animazione", verrà riportato al primo fotogramma chiave. Inoltre, il SharedObject che andremo a impostare verrà eliminato.
L'ultimo keyframe contiene un semplice lettore RSS del feed ActiveTuts +. Se l'utente fa clic sul pulsante "Disconnetti", verrà reindirizzato al secondo fotogramma chiave e l'oggetto SharedObject verrà cancellato. Ciò significa che l'utente visualizzerà l'animazione di introduzione la volta successiva che visiteranno il sito.
Crea un nuovo file 'ActionScript' e salvalo nella stessa cartella di 'sharedObject.fla'. Assegna al file un nome di "sharedObject.as". Quindi, collega insieme il file Flash e il file ActionScript nel pannello Proprietà. Per un approfondimento su come impostare la classe Documento, visita questo altro suggerimento rapido.
Ecco le istruzioni di importazione che utilizzeremo per questo file. Poiché utilizziamo più di un fotogramma della timeline, sarà necessario estenderlo come MovieClip.
package import flash.display.MovieClip; import flash.display.SimpleButton; import flash.events.Event; import flash.events.MouseEvent; importa flash.net.SharedObject; import flash.net.URLLoader; import flash.text.TextField; public class sharedObject estende MovieClip public function sharedObject ()
Ecco cosa dice il riferimento al linguaggio ActionScript 3.0 su SharedObjects:
La classe SharedObject viene utilizzata per leggere e memorizzare quantità limitate di dati sul computer dell'utente o su un server. Gli oggetti condivisi offrono la condivisione dei dati in tempo reale tra più file SWF client e oggetti permanenti sul computer locale o sul server remoto. Gli oggetti condivisi locali sono simili ai cookie del browser e gli oggetti condivisi remoti sono simili ai dispositivi di trasferimento dati in tempo reale. Per utilizzare oggetti condivisi remoti, è necessario Adobe Flash Media Server.
In questo esempio, lavoreremo solo con oggetti locali condivisi. Per iniziare con SharedObjects, creiamo una variabile chiamata 'shared' e la cast come SharedObject. Successivamente, usiamo il metodo 'getLocal' della classe SharedObject. Gli ho dato un nome di "esempio", ma puoi dargli un nome che ti piace.
Dopo aver inizializzato il nostro SharedObject, chiamiamo la funzione 'init'. Nella funzione 'init', interrompiamo la linea temporale principale. Controlliamo anche SharedObject per vedere se l'animazione di introduzione è stata guardata. Se lo è, inviamo l'utente al frame 2. Se la proprietà 'guardato' sull'oggetto 'data' del nostro SharedObject non è stata impostata, riproduciamo l'animazione e ascoltiamo che finisca con l'uso di un evento ENTER_FRAME.
package import flash.display.MovieClip; import flash.display.SimpleButton; import flash.events.Event; import flash.events.MouseEvent; importa flash.net.SharedObject; import flash.net.URLLoader; import flash.text.TextField; public class sharedObject estende MovieClip private var shared: SharedObject; public function sharedObject () shared = SharedObject.getLocal ("example"); dentro(); funzione privata init (): void this.stop (); if (shared.data.watched === true) this.gotoAndStop (2); frame2handler (); else this.addEventListener (Event.ENTER_FRAME, onEnter);
Nella funzione 'onEnter', ascoltiamo se l'animazione ha raggiunto la fine dei suoi frame. Fatto ciò, rimuoviamo il listener di eventi, andiamo al secondo keyframe sulla timeline principale e chiamiamo la funzione 'frame2handler'. Impostiamo anche la proprietà 'guardato' sull'oggetto 'dati' di SharedObject. Poiché "data" è un oggetto, possiamo assegnargli qualsiasi valore. Ho appena usato 'guardato' come indicatore per l'animazione di introduzione.
Successivamente, chiamiamo il metodo 'flush' di SharedObject. Ciò salverà SharedObject nel file locale appropriato e sarà accessibile per un uso successivo.
funzione privata 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 ();
Nella funzione 'frame2handler', noterai che sto chiamando il metodo 'addFrameScript'. Usando questo metodo, possiamo accedere a diversi MovieClip in diverse parti della timeline. 'addFrameScript' è a base zero, quindi per accedere ai MovieClip sul frame 2, lo passiamo 1. Inoltre, passiamo a una funzione inline per gestire qualsiasi logica sul frame 2. All'interno di tale funzione, stiamo controllando per vedere se il SharedObject ha i valori "user", "password" e "remember". Se lo sono, popoliamo i campi di testo con le informazioni appropriate.
funzione privata frame2handler (): void this.addFrameScript (1, function () if (shared.data.user! = null && shared.data.password! = null) user.text = shared.data.user; password .text = shared.data.password; remember.selected = shared.data.remember; remember.label = "Ricordami"; enter.addEventListener (MouseEvent.CLICK, onClick); watcher.addEventListener (MouseEvent.CLICK, onClick) ;);
Poiché l'app è piccola, gestiremo tutti i clic con una funzione. All'interno della funzione 'onClick', controlliamo il nome del target dell'evento. Se il nome è "invio", controlliamo quindi se l'utente desidera che le sue informazioni di accesso vengano memorizzate. Se lo facessero, aggiungeremmo semplicemente più valori all'oggetto 'dati'. In caso contrario, elimineremo quei valori dall'oggetto 'dati'. Successivamente, inviamo l'utente sul frame 3 e chiamiamo "frame3handler". Se l'utente ha fatto clic sul pulsante "watcher", cancelliamo il valore associato all'animazione di introduzione. L'utente ritorna quindi al primo frame e chiamiamo la funzione 'init' usando 'addFrameScript'. Infine, sul terzo fotogramma, se l'utente fa clic sul pulsante "più chiaro", cancelliamo l'oggetto "dati" e tutti i valori di SharedObject vengono cancellati. L'utente viene quindi rispedito al frame 2 e nessuna delle informazioni viene conservata.
funzione privata onClick (event: MouseEvent): void switch (event.target.name) case "enter": if (remember.selected) shared.data.user = user.text; shared.data.password = password.text; shared.data.remember = remember.selected; shared.flush (); else elimina shared.data.user; elimina shared.data.password; this.gotoAndStop (3); frame3handler (); rompere; case "watcher": elimina shared.data.watched; this.gotoAndStop (1); this.addFrameScript (0, function () init ();); rompere; case "clearer": shared.clear (); this.gotoAndStop (2); rompere;
Nella funzione 'frame3handler', usiamo di nuovo 'addFrameScript' per accedere ai MovieClip sul frame 3. All'interno della funzione inline, carichiamo il feed RSS e usiamo i componenti List e TextArea per visualizzare le informazioni.
funzione privata frame3handler (): void this.addFrameScript (2, function () clearer.addEventListener (MouseEvent.CLICK, onClick); var url: URLLoader = new URLLoader (); url.addEventListener (Event.COMPLETE, function () var xml: XML = new XML (url.data); var xmlList: XMLList = xml ... elemento; for (var i: int = 0; i
Conclusione
Esistono molte applicazioni per SharedObjects. Basta controllare qualsiasi sito come Pandora o siti di giochi come su Adult Swim. Tuttavia, il modo migliore per imparare è sperimentare te stesso e, naturalmente, iscriverti a Tuts+.
Grazie per il seguito!