Comunidad de diseño web y desarrollo en internet

SharedObjects en Flash

Macromedia ha cambiado muchas veces el rumbo de Flash, iniciando desde una robusta aplicación destinada a la animación vectorial (Y en consecuencia, liviana) para la web hasta llegar a todo un entorno multimedia de integración cliente/servidor, bases de datos, con soporte multiusuario y capacidades ActionScript que han desplazado a Java del lado del cliente y lo han replegado a aplicaciones de mas alto poder.
Entre las tantas capacidades y necesidades actuales nos encontramos con escribir datos en el disco duro del usuario, util cuando queremos recordar a nuestro usuario, o cuando queremos que algun dato sea persistente, Flash tambien ha llenado esta expectativa por medio de los SharedObjects.

Fundamentos basicos de SharedObjects

Para nuestro ejemplo actual crearemos una interfaz que conste de dos campos de texto, un boton para grabar los datos y otro para cargarlos , asi:
  1. Input Text, nombre de instancia "nombre_txt"
  2. Input Text, nombre de instancia "correo_txt"
  3. Boton "Guardar"
  4. Boton "Cargar"
Dando a la interfaz, una apariencia similar a esta:

La idea es que nuestro usuario deje su nombre y correo, lo "guarde", cierre la aplicación y cuando vuelva a entrar, al darle "cargar", los ultimos datos que guardo estaran ahi; en este ejemplo, todo el codigo estara en los botones, pero por hacerlo mas "funcional" y "modular", vamos a crear dos funciones, una que nos guarde dos datos y otra que los cargue.

Codigo en el boton "GUARDAR"
on (release) {
	//Invoco la función (Que creare mas tarde) guardarDatos
	//pasandole por parametro el nombre y el correo
	guardarDatos(nombre_txt.text, correo_txt.text);
}
Codigo en el boton "CARGAR"
on (release) {
	//La función cargarDatos recibe por parametro el dato a devolver,
	//lo entenderan mejor al ver las funciones
	nombre_txt.text = cargarDatos("nombre");
	correo_txt.text = cargarDatos("correo");
}
Ahora lo mas importante, el codigo de las funciones, este vendra en el primer Keyframe de la pelicula, viendo este codigo, todo quedara entendido.
//Esta función recibe por parametro el nombre y el correo a guardar
function guardarDatos(nombre:String, correo:String) {
	//Creamos una nueva variable de tipo SharedObject, esta sera la
	//que nos guarde datos en el disco del usuario
	var disco_so:SharedObject;
	//El metodo "getLocal" del objeto "SharedObject" me devuelve
	//algo asi como un archivo que le pase por parametro, en este
	//caso, el archivo se llama "datos", si no existe, lo crea
	disco_so = SharedObject.getLocal("datos");
	//Los SharedObjects tiene una colección llamada "data", a esta
	//le asignamos todas las variables que vamos a guardar en el 
	//archivo, en mi caso les puse "elNombre" y "elCorreo"
	//Les asigno los datos que llegaron como parametro de la función
	disco_so.data.elNombre = nombre;
	disco_so.data.elCorreo = correo;
	//Por ultimo, esa instrucción del SharedObject guarda en el disco
	//los datos
	disco_so.flush();
}
//La función de cargar datos me devolvera uno de los datos que le pase
//por parametro, tenemos dos, un nombre y un correo, asi que dependiendo
//de lo que le pidamos lo devolvera
function cargarDatos(dato) {
	//Estas 2 lineas son iguales que en la anterior función
	var disco_so:SharedObject;
	//Pero aqui, cuando le pedimos que sabra el archivo "datos", 
	//automaticamente carga toda la información contenida en ese archivo
	disco_so = SharedObject.getLocal("datos");
	//Si el parametro que llego fue "nombre"....
	if (dato == "nombre") {
		//Retornara el nombre que guardamos en el archivo
		return disco_so.data.elNombre;
		//Si no, y si en cambio es "correo"
	} else if (dato == "correo") {
		//Retornara el correo guardado
		return disco_so.data.elCorreo;
	}
}

Conclusiones

El objeto SharedObject viene a tapar un gran vacio (Que antes se llenaba con algunos "hacks") en Flash, que era el volcado a disco de los datos que ActionScript manejaba en memoria; en las colecciones "data" ustedes pueden, no solo guardar variables de texto, sino tambien volcar todo un objeto, un Array o una clase; experimentar es la base de la innovación y las nuevas tecnicas.
Para una referencia mas profunda del objeto SharedObject pueden ir a los livedocs del objeto en Macromedia.
Y ya saben, cualquier duda pueden redirigirla al foro.

Freddie® Cristalab
webmaster@cristalab.com

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Descargar Archivo

Publica tu comentario

El autor de este artículo ha cerrado los comentarios. Si tienes preguntas o comentarios, puedes hacerlos en el foro

Entra al foro y participa en la discusión

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate