En este Consejo rápido, le mostraré cómo almacenar y acceder a SharedObjects (el equivalente de Flash de las cookies) para que pueda guardar y cargar datos de usuarios entre sesiones.
Echemos un vistazo al resultado final en el que trabajaremos:
Tenga en cuenta que la animación de introducción no se reproduce si ya la ha visto una vez. Intente iniciar sesión (puede usar cualquier combinación de nombre de usuario y contraseña) y luego actualice el navegador sin cerrar sesión. Sus datos serán ingresados automáticamente..
Para restablecer los datos guardados en SharedObject, inicie sesión y vuelva a cerrar sesión.
Lo primero que debes hacer es descargar los archivos de origen para este tutorial. Dado que este tutorial es una sugerencia rápida, omitiré los pasos de diseño. Una vez que haya descargado los archivos, abra el archivo 'sharedObject.fla'. Cuando se cargue el archivo, notará que tenemos tres fotogramas clave en la línea de tiempo.
El primer fotograma clave contiene la animación de introducción. La animación es solo un movieclip con algunas interpolaciones de movimiento y una acción de 'parar' al final.
El segundo fotograma clave es la pantalla de inicio de sesión. Aquí un usuario puede ingresar su información. Pueden optar por guardarlo o no. Si el usuario hace clic en el botón "Ver animación nuevamente", volverá al primer fotograma clave. Además, el objeto SharedObject que vamos a configurar será eliminado.
El último fotograma clave contiene un simple lector RSS de la fuente ActiveTuts +. Si el usuario hace clic en el botón "Cerrar sesión", volverá al segundo fotograma clave y se eliminará el objeto SharedObject. Esto significa que el usuario verá la animación de introducción la próxima vez que visite el sitio..
Cree un nuevo archivo 'ActionScript' y guárdelo en la misma carpeta que 'sharedObject.fla'. Asigne al archivo el nombre 'sharedObject.as'. A continuación, vincule el archivo Flash y el archivo ActionScript en el panel Propiedades. Para obtener información más detallada sobre cómo configurar la clase de documento, visite este otro consejo rápido..
Aquí están las declaraciones de importación que usaremos para este archivo. Ya que estamos usando más de un fotograma de la línea de tiempo, necesitaremos extenderlo como un clip de película..
paquete import flash.display.MovieClip; importar flash.display.SimpleButton; import flash.events.Event; import flash.events.MouseEvent; importar flash.net.SharedObject; importar flash.net.URLLoader; importar flash.text.TextField; public class sharedObject extiende MovieClip public function sharedObject ()
Esto es lo que dice la referencia del lenguaje ActionScript 3.0 sobre SharedObjects:
La clase SharedObject se usa para leer y almacenar cantidades limitadas de datos en la computadora de un usuario o en un servidor. Los objetos compartidos ofrecen el intercambio de datos en tiempo real entre varios archivos SWF de clientes y objetos que son persistentes en la computadora local o el servidor remoto. Los objetos compartidos locales son similares a las cookies del navegador y los objetos compartidos remotos son similares a los dispositivos de transferencia de datos en tiempo real. Para usar objetos compartidos remotos, necesita Adobe Flash Media Server.
En este ejemplo, solo trabajaremos con objetos compartidos locales. Para comenzar a utilizar SharedObjects, creamos una variable llamada 'shared' y la convertimos como SharedObject. A continuación, usamos el método 'getLocal' de la clase SharedObject. Le di un nombre de 'ejemplo', pero puedes darle el nombre que quieras.
Después de que hayamos inicializado nuestro SharedObject, llamamos a la función 'init'. En la función 'init', paramos la línea de tiempo principal. También verificamos el objeto SharedObject para ver si se ha visto la animación de introducción. Si es así, enviamos al usuario al marco 2. Si no se ha establecido la propiedad 'observada' en el objeto 'datos' de nuestro SharedObject, reproducimos la animación y la escuchamos para que termine de usar un evento ENTER_FRAME.
paquete import flash.display.MovieClip; importar flash.display.SimpleButton; import flash.events.Event; import flash.events.MouseEvent; importar flash.net.SharedObject; importar flash.net.URLLoader; importar flash.text.TextField; public class sharedObject extiende MovieClip private var shared: SharedObject; función pública sharedObject () shared = SharedObject.getLocal ("example"); en eso(); función privada init (): void this.stop (); if (shared.data.watched === true) this.gotoAndStop (2); frame2handler (); else this.addEventListener (Event.ENTER_FRAME, onEnter);
En la función 'onEnter', escuchamos para ver si la animación ha llegado al final de sus cuadros. Una vez que lo tiene, eliminamos el detector de eventos, vamos al segundo fotograma clave en la línea de tiempo principal y llamamos a la función 'frame2handler'. También establecemos la propiedad 'observada' en el objeto 'datos' de SharedObject. Dado que 'datos' es un objeto, podemos asignarle cualquier valor. Acabo de usar 'mirado' como indicador para la animación de introducción.
A continuación, llamamos al método 'flush' del SharedObject. Esto guardará el SharedObject en el archivo local apropiado y será accesible para su uso posterior.
función privada onEnter (evento: Evento): void if (animation.currentFrame === animation.totalFrames) this.removeEventListener (Event.ENTER_FRAME, onEnter); this.gotoAndStop (2); frame2handler (); shared.data.watched = true; shared.flush ();
En la función 'frame2handler', notará que estoy llamando al método 'addFrameScript'. Usando este método, podemos acceder a diferentes MovieClips en diferentes partes de la línea de tiempo. 'addFrameScript' está basado en cero, por lo que para acceder a MovieClips en el fotograma 2, lo pasamos 1. Además, le pasamos una función en línea para manejar cualquier lógica en el fotograma 2. Dentro de esa función, estamos comprobando si el SharedObject tiene los valores de "usuario," contraseña "y" recordar "establecidos. Si lo son, rellenamos los campos de texto con la información apropiada.
función privada 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 = "Remember me"; enter.addEventListener (MouseEvent.CLICK, onClick); watcher.addEventListener (MouseEvent.CLICK, onClick) ;);
Como la aplicación es pequeña, vamos a manejar todos los clics con una función. Dentro de la función 'onClick', verificamos el nombre del objetivo del evento. Si el nombre es 'ingresar', verificamos si el usuario desea que se recuerde su información de inicio de sesión. Si lo hicieran, simplemente agregamos más valores al objeto 'datos'. Si no, eliminaremos esos valores del objeto 'datos'. Después de eso, enviamos al usuario al marco 3 y llamamos al 'frame3handler'. Si el usuario ha hecho clic en el botón 'observador', eliminamos el valor asociado con la animación de introducción. El usuario regresa al primer fotograma y llamamos a la función 'init' usando 'addFrameScript'. Finalmente, en el tercer cuadro, si el usuario hace clic en el botón "más claro", borramos el objeto "datos" y se borran todos los valores de SharedObject. El usuario es enviado de vuelta al marco 2 y no se conserva ninguna de su información..
función privada onClick (evento: 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 delete shared.data.user; eliminar shared.data.password; this.gotoAndStop (3); frame3handler (); descanso; caso "watcher": borrar shared.data.watched; this.gotoAndStop (1); this.addFrameScript (0, function () init ();); descanso; caso "más claro": shared.clear (); this.gotoAndStop (2); descanso;
En la función 'frame3handler', usamos 'addFrameScript' nuevamente para acceder a los MovieClips en el marco 3. Dentro de la función en línea, cargamos la fuente RSS y usamos los componentes List y TextArea para mostrar la información.
función privada frame3handler (): void this.addFrameScript (2, function () clearer.addEventListener (MouseEvent.CLICK, onClick); var url: URLLoader = new URLLoader (); url.addEventListener (Event.COMPLETE, function () var xml: XML = nuevo XML (url.data); var xmlList: XMLList = xml ... elemento; para (var i: int = 0; i
Conclusión
Hay un montón de aplicaciones para SharedObjects. Solo echa un vistazo a cualquier sitio como Pandora o sitios de juegos como en Adult Swim. Sin embargo, la mejor manera de aprender es experimentarse y, por supuesto, suscribirse a Tuts.+.
Gracias por seguirnos!