Comunidad de diseño web y desarrollo en internet online

Descargar un fichero xml en el ordenador

Citar            
MensajeEscrito el 15 Jun 2009 05:17 pm
Hola,

he creado un flash en el que se introducen una serie de letras desde el ordenador en unos campos de texto, quisiera guardar, en un fichero xml, la información introducida por el usuario en un momento dado y luego poder recuperarla para continuar la actividad, (en el mismo ordenador donde tengo el swf).

La carga de datos desde un fichero xml ubicado en el ordenador la realizo con la función onLoad y quisiera saber si conocéis alguna función para guardar datos en el mismo ordenador.

Gracias.

Por jose!!!

23 de clabLevel



 

msie8
Citar            
MensajeEscrito el 16 Jun 2009 12:12 pm
El único archivo que puedes escribir un swf es un SharedObject, para escribir cualquier otro tipo de archivo necesita de un lenguaje de back-end y solo lo puede hacer en el servidor. Si se tratara de un ejecutable, entonces hay extensiones de terceros ( Zinc) que permiten escribir archivos, o incluso podrías usar AIR

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Jun 2009 02:02 pm
Gracias por la ayuda,

he encontrado dos paginas en el foro que hablan de SharedObject, la primera explica como guardar los datos de uno en uno y recuperarlos de uno en uno y me funciona, pero me interesa guardarlos en forma de matriz ya que tengo 196 para guardar, la segunda página que explica como hacerlo en el caso de una matriz no consigo salir adelante.

http://www.cristalab.com/tutoriales/sharedobjects-en-flash-c10l/

http://foros.cristalab.com/como-puedo-guardar-mas-de-una-cosa-con-shared-objects-t4548/

El código de las funciones guardar y cargar que tengo es:

Código ActionScript :

function guardarDatos(matriz:Array) {
      
   for (i=0; i<columnas; i++) {
         for (j=0; j<filas; j++) {
            dato_guar[i]= new Array();
            }
   }
   var disco_so:SharedObject;
   
   disco_so = SharedObject.getLocal("datos");
   
   disco_so.data.dato1 = matriz[0][0];
   disco_so.data.dato2 = matriz[0][1];
   disco_so.data.dato_guar[0][2] = matriz[0][2]

   trace(matriz[0][2]); //contiene el valor correcto.
   trace (disco_so.data.dato_guar[0][2]); //obtengo undefined.
   
   disco_so.flush();
}

function cargarDatos(dato) {
   
   var disco_so:SharedObject;
   
   disco_so = SharedObject.getLocal("datos");
   
   if (dato == "resposta0") {
      
      return disco_so.data.dato[0][0]; //como se accede?.



Y los botoenes guardar y cargar,

on (press) {
   mouse;
   mf=0;   
   for (i=0; i<columnas; i++) {
         for (j=0; j<filas; j++) {
            matriz[i]= new Array();
            }
   }
   
   for (i=0; i<columnas; i++){
      for (j=0; j<filas; j++){
         matriz[i][j]=_root["resposta"+mf].text;
         mf=mf+1;
      }
   }
   guardarDatos(matriz);
}

on (press) {
   mouse;
   
   mf=0;
      
      for (i=0; i<filas; i++) {

         for (j=0; j<columnas; j++) {
               
         //_root["resposta"+mf].text=cargarDatos(matriz[i][j]);//lo he probado pero no funciona
            mf=mf+1
         }
      }
   resposta0.text = cargarDatos("resposta0");
   resposta1.text = cargarDatos("resposta1");
   resposta2.text = cargarDatos("resposta2");
}

Gracias de nuevo por vuestra ayuda.

Por jose!!!

23 de clabLevel



 

msie8
Citar            
MensajeEscrito el 16 Jun 2009 02:08 pm
Parece que no tienes claro el manejo de matrices, para no complicarte, guarda un solo listado (un array simple o listado), luego lo recuperas entero y ya lo manipulas

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Jun 2009 02:24 pm
Hola de nuevo,

debo de cometer algun error al acceder a los datos en la forma de matriz, ya que en la funcion guardar antes comentada.


obtengo el dato correcto con:

disco_so.data.dato1 = matriz[0][0];
trace(disco_so.data.dato1);

en cambio obtengo "undefined" si lo hago:

disco_so.data.dato_guar[0] = matriz[0][0];
trace (disco_so.data.dato_guar[0]);

Jose.

Por jose!!!

23 de clabLevel



 

msie8
Citar            
MensajeEscrito el 16 Jun 2009 02:45 pm
No he leído el tutorial, pero dado que tienes que pasarle un string al data, intenta con

disco_so.data[dato_guar[0]]

No lo traces antes de hacer un flush

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Jun 2009 05:20 pm
Gracias, por la respuesta, ya he logrado guardar los datos, ahora intentaré recuperarlos.

Por jose!!!

23 de clabLevel



 

msie8
Citar            
MensajeEscrito el 16 Jun 2009 05:39 pm
Hola, de nuevo, ahora tengo el problema de coger los datos del fichero, intento acceder a él de la siguiente manera:

function cargarDatos(dato) {

var disco_so:SharedObject;

disco_so = SharedObject.getLocal("datos");

trace(disco_so.data[dato_guar[0][0]]);
}

pero el trace que hago no contiene nada.

La funcion que guarda los datos es:

function guardarDatos(matriz:Array) {

var disco_so:SharedObject;

disco_so = SharedObject.getLocal("datos");

for (i=0; i<columnas; i++) {
for (j=0; j<filas; j++) {
disco_so.data[dato_guar[i][j]] = matriz[i][j];
}
}

disco_so.flush();
}

Gracias por vuestra ayuda.

Por jose!!!

23 de clabLevel



 

msie8

 

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