Dans cette astuce, je vais vous montrer comment stocker et accéder à SharedObjects (l'équivalent Flash des cookies) afin de pouvoir enregistrer et charger les données utilisateur entre les sessions..
Jetons un coup d'œil au résultat final sur lequel nous allons travailler:
Notez que l'animation d'intro ne joue pas si vous l'avez déjà vue une fois. Essayez de vous connecter (vous pouvez utiliser n’importe quelle combinaison de nom d’utilisateur / mot de passe), puis actualisez le navigateur sans vous déconnecter. Vos coordonnées seront automatiquement entrées.
Pour réinitialiser les données enregistrées dans SharedObject, connectez-vous puis reconnectez-vous..
La première chose à faire est de télécharger les fichiers source de ce tutoriel. Comme ce tutoriel est une astuce rapide, je vais sauter les étapes de la mise en page. Une fois les fichiers téléchargés, ouvrez le fichier 'sharedObject.fla'. Lorsque le fichier est chargé, vous remarquerez que nous avons trois images clés sur la timeline.
La première image clé contient l'animation d'introduction. L'animation est juste un MovieClip avec quelques tweens de mouvement et une action "stop" à la fin.
La deuxième image clé est l'écran de connexion. Ici, un utilisateur peut entrer ses informations. Ils peuvent choisir de le sauvegarder ou non. Si l'utilisateur clique sur le bouton "Regarder l'animation à nouveau", ils seront ramenés à la première image clé. En outre, le SharedObject que nous allons définir sera supprimé.
La dernière image clé contient un simple lecteur RSS du flux ActiveTuts +. Si l'utilisateur clique sur le bouton "Déconnexion", il sera ramené à la deuxième image clé et l'objet SharedObject sera effacé. Cela signifie que l'utilisateur visualisera l'animation d'intro lors de sa prochaine visite sur le site..
Créez un nouveau fichier "ActionScript" et enregistrez-le dans le même dossier que "sharedObject.fla." Nommez le fichier 'sharedObject.as.' Ensuite, liez le fichier Flash et le fichier ActionScript dans le panneau Propriétés. Pour plus d'informations sur la configuration de la classe Document, consultez cet autre conseil rapide..
Voici les instructions d'importation que nous allons utiliser pour ce fichier. Puisque nous utilisons plus d’une image du scénario, nous devrons l’étendre en tant que MovieClip..
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; Classe publique sharedObject étend MovieClip fonction publique sharedObject ()
Voici ce que dit le Guide de référence du langage ActionScript 3.0 sur SharedObjects:
La classe SharedObject est utilisée pour lire et stocker des quantités limitées de données sur l'ordinateur d'un utilisateur ou sur un serveur. Les objets partagés offrent un partage de données en temps réel entre plusieurs fichiers SWF clients et des objets persistants sur l'ordinateur local ou le serveur distant. Les objets partagés locaux sont similaires aux cookies de navigateur et les objets partagés distants sont similaires aux périphériques de transfert de données en temps réel. Pour utiliser des objets partagés distants, vous avez besoin d'Adobe Flash Media Server..
Dans cet exemple, nous ne travaillerons qu'avec des objets partagés locaux. Afin de commencer à utiliser SharedObjects, nous créons une variable appelée 'shared' et la convertissons en SharedObject. Ensuite, nous utilisons la méthode 'getLocal' de la classe SharedObject. Je lui ai donné le nom de 'exemple', mais vous pouvez lui donner le nom de votre choix.
Après avoir initialisé notre SharedObject, nous appelons la fonction 'init'. Dans la fonction 'init', nous arrêtons le scénario principal. Nous vérifions également le SharedObject pour voir si l'animation d'intro a été visionnée. Si tel est le cas, nous envoyons l'utilisateur à l'image 2. Si la propriété "surveillé" sur l'objet "données" de notre SharedObject n'a pas été définie, nous lisons l'animation et l'écoutons pour qu'elle se termine à l'aide d'un événement ENTER_FRAME..
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; Classe publique sharedObject étend MovieClip private var shared: SharedObject; fonction publique sharedObject () shared = SharedObject.getLocal ("exemple"); init (); fonction privée init (): void this.stop (); if (shared.data.watched === true) this.gotoAndStop (2); frame2handler (); else this.addEventListener (Event.ENTER_FRAME, onEnter);
Dans la fonction 'onEnter', nous écoutons pour voir si l'animation a atteint la fin de ses images. Une fois que cela est arrivé, nous supprimons l'écouteur d'événements, passons à la deuxième image clé du scénario principal et appelons la fonction 'frame2handler'. Nous avons également défini la propriété 'surveillée' sur l'objet 'data' de SharedObject. Puisque "data" est un objet, nous pouvons lui attribuer n'importe quelle valeur. Je viens d'utiliser 'regardé' comme indicateur pour l'animation d'intro.
Ensuite, nous appelons la méthode "flush" de SharedObject. Cela permettra d’enregistrer le SharedObject dans le fichier local approprié et d’être accessible pour une utilisation ultérieure..
fonction privée 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 ();
Dans la fonction 'frame2handler', vous remarquerez que j'appelle la méthode 'addFrameScript'. En utilisant cette méthode, nous pouvons accéder à différents MovieClips dans différentes parties du scénario. 'addFrameScript' est basé sur zéro, donc pour accéder aux MovieClips sur l'image 2, nous le transmettons 1. Nous lui transmettons également une fonction en ligne permettant de gérer toute logique sur l'image 2. À l'intérieur de cette fonction, nous vérifions si le SharedObject a les valeurs utilisateur, mot de passe et mémoriser. Si c'est le cas, nous renseignons les champs de texte avec les informations appropriées..
fonction privée frame2handler (): void this.addFrameScript (1, function () if (shared.data.user! = null && shared.data.password! = null) user.text = shared.data.user; mot de passe .text = shared.data.password; Remember.selected = Shared.data.remember; Remember.label = "Mémoriser mes informations"; enter.addEventListener (MouseEvent.CLICK, onClick); watcher.addEventListener (MouseEvent.CLICK, onClick) ;);
Comme l'application est petite, nous allons gérer tous les clics avec une seule fonction. Dans la fonction 'onClick', nous vérifions le nom de la cible de l'événement. Si le nom est 'entrer', nous vérifions ensuite si l'utilisateur souhaite que ses informations de connexion soient mémorisées. S'ils le faisaient, nous ajoutons simplement plus de valeurs à l'objet 'data'. Sinon, nous allons supprimer ces valeurs de l'objet 'data'. Après cela, nous envoyons l'utilisateur sur l'image 3 et appelons le 'frame3handler'. Si l'utilisateur a cliqué sur le bouton "observateur", nous supprimons la valeur associée à l'animation d'introduction. L'utilisateur revient ensuite à la première image et nous appelons la fonction 'init' à l'aide de 'addFrameScript.' Enfin, dans le troisième cadre, si l'utilisateur clique sur le bouton "Plus clair", nous effaçons l'objet "Données" et toutes les valeurs de SharedObject sont effacées. L'utilisateur est ensuite renvoyé à l'image 2 et aucune de ses informations n'est conservée..
fonction privée onClick (event: MouseEvent): void switch (event.target.name) case "enter": if (souvenez-vous. sélectionné) 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; this.gotoAndStop (3); frame3handler (); Pause; case "watcher": delete shared.data.watched; this.gotoAndStop (1); this.addFrameScript (0, function () init ();); Pause; case "clearer": shared.clear (); this.gotoAndStop (2); Pause;
Dans la fonction 'frame3handler', nous utilisons à nouveau 'addFrameScript' pour accéder aux MovieClips sur l'image 3. À l'intérieur de la fonction inline, nous chargeons le flux RSS et utilisons les composants List et TextArea pour afficher les informations..
fonction privée frame3handler (): void this.addFrameScript (2, function () clearer.addEventListener (MouseEvent.CLICK, onClick); var url: URLLoader = nouvel URLLoader (); url.addEventListener (Event.COMPLETE, fonction () var xml: XML = nouveau XML (url.data); var xmlList: XMLList = xml… item; pour (var i: int = 0; i
Conclusion
Il existe une tonne d'applications pour SharedObjects. Il suffit de consulter n'importe quel site comme Pandora ou des sites de jeux comme Adult Swim. Cependant, le meilleur moyen d’apprendre est de faire ses propres expériences et, bien sûr, de s’abonner à Tuts+.
Merci d'avoir suivi!