Comunidad de diseño web y desarrollo en internet online

Guardar y Cargar con SharedObjects

Citar            
MensajeEscrito el 25 Nov 2009 05:18 pm
Tengo este código, que si no recuerdo mal es de un tutorial de Jorge.

Código ActionScript :

//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;
   }
}


lo entiendo, veo como funciona, pero ahora quiero modificarlo para adaptarlo a mis necesidades. El problema es que no se como hacerlo, os explico mi problema.

Tengo un juego que se compone de una historia, y de minijuegos, todo esto en AS2, esta el index, y desde ahí voy cargando en un MC vació llamado "cargador" el resto de mis swf con la historia y los minijuegos.

Ahora quiero tener una opción que este activa en cualquier momento de la partida, que cuando le den a guardar se guarde la posición actual (es decir que swf esta cargado), y que luego en el index tengan una pantalla que cuando le den a cargar, cargue automáticamente el swf en el que se quedaron.

Yo creo que con el código que tengo arriba se puede lograr, lo que no se es como indicarle que lo que guarde sea el SWF actual, y como decirle luego que lo cargue desde index en el MC vació llamado "cargador".

¿Algun codigo por ahi que lo resuelva? :P

Un saludo

Por Azlinraeh

15 de clabLevel



 

España

chrome
Citar            
MensajeEscrito el 25 Nov 2009 08:39 pm
A ver si te entendí:

Código ActionScript :

function guardarDatos(SWF:String):Void { 
    var disco_so:SharedObject; 
    disco_so = SharedObject.getLocal("datos"); 
   disco_so.data.SWF = SWF; 
   disco_so.flush(); 
} 

function cargarDatos():Void { 
   var disco_so:SharedObject; 
   disco_so = SharedObject.getLocal("datos"); 
   container.loadMovie(disco_so.data.SWF)
}


Y luego cuando quieres guardar lo llamas con:

Código ActionScript :

guardarDatos("mymovie.swf");

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 30 Nov 2009 11:23 am
Buenas Hernán,

Perfecto el código que me pusiste, funciona a las mil maravillas!!! Muchisimas gracias!! Con ese código ya lo tengo solucionado, pero ahora me ha picado la curiosidad, ¿se podría hacer que el usuario guarde con un nombre de partida que el escriba, y luego cuando cargue partida, que pueda introducir el nombre con el que guardo, y que cargue los datos guardados (pantalla, puntos..)?

Por Azlinraeh

15 de clabLevel



 

España

firefox
Citar            
MensajeEscrito el 30 Nov 2009 09:04 pm
Si claro...

Si te fijas, no es muy difícil, puedes crear dentro de tu función guardarDatos cuantas variables desees. Solo tienes que hacer:

Código ActionScript :

disco_so.nombre_variable=dato_a_guardar;


Y luego llamas simplemente con:

Código ActionScript :

disco_so.nombre_variable


Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 10 Dic 2009 12:18 pm
Muchas gracias por toda la ayuda que me estas prestando.

Os expongo mi nuevo problema:
Tengo esta funcion para guardar las variables:

Código ActionScript :

function guardarDatos(SWF) {
   var _loc1;
   _loc1 = SharedObject.getLocal("datos");
   _loc1.data.SWF = SWF;
   _loc1.data.USUARIO2 = usuarioB;
   _loc1.flush();
}


Luego tengo este codigo para el boton de guardar.

Código ActionScript :

btn_guardar.onPress = function() {
   usuarioC = usuario //usuario es una variable global que tengo en este mismo documento declarada _global.usuario="";
   if (zona == 1) {
      guardarDatos("00-Intro/chica01.swf", usuarioC);
   }
   if (zona == 2) {
      guardarDatos("00-Intro/chica02.swf", usuarioC);
   }
   if (zona == 3) {
      guardarDatos("00-Intro/chica03.swf", usuarioC);
   }
};


Este es el codigo de la funcion Cargar:

Código ActionScript :

function cargarDatos(dato) {
   var _loc1;
   _loc1 = SharedObject.getLocal("datos");
   if (dato == "SWF"){
   cargador.loadMovie(_loc1.data.SWF);
   }
   if (dato == "usuarioB"){
   _loc1.data.USUARIO2;
   }
};


y ahora viene mi problema, tengo este código para cargar los datos guardados, el SWF lo carga de maravilla, pero no consigo cargar los datos en _global.usuario de ninguna de las maneras:

Código ActionScript :

cargar.onPress = function() {
   cargarDatos("SWF");
   _global.usuario = cargarDatos("usuarioB");
};


¿alguna idea?

Por Azlinraeh

15 de clabLevel



 

España

firefox
Citar            
MensajeEscrito el 10 Dic 2009 03:04 pm
Pues tu función dice:

Código ActionScript :

function guardarDatos(SWF) { 
 }


Donde solo tiene de parametro SWF y tu haces:

Código ActionScript :

guardarDatos("00-Intro/chica01.swf", usuarioC); 


Deberías pasar en tu función principal otro parametro más, sino el usuarioC, jamás se verá. O sea:

Código ActionScript :

function guardarDatos(SWF,usuarioB) { 


Además si llamas variables globales, intenta marcalas usando el _global

Saludso, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 11 Dic 2009 06:00 pm
Muchísimas gracias Hernan!!!

Por Azlinraeh

15 de clabLevel



 

España

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.