Como guardar datos de forma permanente en Flash (ActionScript 3)

Guardar datos, que permanezcan utilizables incluso cuando se cierra Flash es algo realmente sencillo. Es una buena técnica para guardar los progresos en los videojuegos, puntos, niveles, etc.

Para guardar datos debemos de usar el objeto: SharedObject (más info), esto objeto, entre otras cosas, nos permite guardar variables en disco, para luego poder leerlas y modificarlas cada vez que lo necesitemos.

La forma de guardar los datos

// Importamos la libreria
import flash.net.SharedObject;

// Iniciamos nuestra variable tipo SharedObject
var so:SharedObject;

// Iniciamos nuestro fichero de datos
so = SharedObject.getLocal("/ficherodondeguardamoslosdatos");

// Añadimos un valor (por ejemplo la puntuación)
so.data.puntuacion = miPuntuacionJuego;

// Guardamos los datos
so.flush();

La forma de cargar los datos
// Importamos la libreria
import flash.net.SharedObject;
// Iniciamos nuestra variable tipo SharedObject
var so:SharedObject;
// Iniciamos nuestro fichero de datos
so = SharedObject.getLocal("/ficherodondeguardamoslosdatos");
// Recuperamos un valor (por ejemplo la puntuación)
if (so.data.puntuacion>0) { // Hay que asegurarse que los datos guardados tienen información válida
miPuntuacionJuego = so.data.puntuacion;
}
¡¡Y esto es todo amigos!!

¿Fué interesante? Por qué no dejas un comentario abajo y continúas la conversación.

Comentarios

Gracias por el post, está interesante investigaré mas de sharedobject, andaba buscando eso.

Hola,
Soy nuevo en esto de programar en actionscript y he copiado y pegado el ejemplo para guardar los datos y no aparece el archivo de texto por ningún sitio. Mi intención es aplicar el ejemplo a una aplicación para móvil. Gracias.

Exacto, nunca vas a ver un fichero de texto, realmente guarda estos datos en una especie de base de datos propia de flash.

Hola, abusando de tu amabilidad. He puesto dos cajas de texto y dos botones y el siguiente código

btnGrabar.addEventListener(MouseEvent.CLICK, grabar);

function grabar(event:MouseEvent):void{
// Importamos la libreria
import flash.net.SharedObject;
// Iniciamos nuestra variable tipo SharedObject
var so:SharedObject;
// Iniciamos nuestro fichero de datos
so = SharedObject.getLocal(”/texto.txt”);
// Añadimos un valor (por ejemplo la puntuación)
so.data.puntuacion = txtGrabar.text;
// Guardamos los datos
so.flush();
}

btnLeer.addEventListener(MouseEvent.CLICK, leer);

function leer(event:MouseEvent):void{
// Importamos la libreria

import flash.net.SharedObject;
// Iniciamos nuestra variable tipo SharedObject
var so:SharedObject;
// Iniciamos nuestro fichero de datos
so = SharedObject.getLocal(”/texto.txt”);
// Recuperamos un valor (por ejemplo la puntuación)
if (so.data.puntuacion>0) { // Hay que asegurarse que los datos guardados tienen información válida
txtLeer.text = so.data.puntuacion;
}
}

No funciona, ¿podrías decirme por qué?.
Muchas gracias.

Hola, ¿estas usando ActionScript 3 o 2? ¿Que error te da? Prueba a cambiar /texto.txt por /texto.

Hola, ya lo había intentado, pero sigue sin funcionar. Uso ActionScript 3. No me da ningún error simplemente no hace nada. Introduzco un texto en txtGrabar y pulso el botón guardar, después pulso el botón leer y en la caja de texto txtleer no aparece nada. Los botones he comprobado que funcionan y las propiedades de txtGrabar, texto clásico e introducción de texto y de txtLeer, texto clásico y texto dinámico. Utilizo windows 7 64 bits.
Un saludo y muchas gracias.

haz una prueba con este código:

function leer(event:MouseEvent):void{
// Importamos la libreria
import flash.net.SharedObject;
// Iniciamos nuestra variable tipo SharedObject
var so:SharedObject;
// Iniciamos nuestro fichero de datos
so = SharedObject.getLocal(”/texto.txt”);
// Recuperamos un valor (por ejemplo la puntuación)
txtLeer.text = so.data.puntuacion;
}

Hola, ahora perfecto.
Muchísimas gracias.
Un saludo, Alberto

ya habia leido algo de SharedObject pero quisiera saber si este codigo es para as 2 o para as 3, solo se manejar el as 2

pregunta: donde queda guardado este archivo, es que la aplicacion que quiero hacer debe poder ser respaldada de manera periodica por el usuario final el cual e supone tiene pocos conocimientos en el manejo del pc….

Hola, este código está en AS3, también es posible utilizar SharedObject en AS2. No obstante para guardar un archivo utilizable por el usuario o que el usuario pueda seleccionar donde guardar el archivo no sirve esta opción, Tienes opciones en Flash para guardar archivos utilizables por el usuario.

Miuy interesante.
En mi caso, lo necesito para hacer una presentación que unos amigos sólo puedan ver una vez. Adaptando el programa, ha funcionado muy bien. Pero hay un problema:
Si, después de verlo, corto y pego el programa en otro directorio, la variable se resetea y no sirve… alguna idea de cómo evitar eso?

Deja un Comentario

(requerido)

(requerido)