Comunidad de diseño web y desarrollo en internet online

Guardar una valor en un archivo externo (¿XML o txt?)

Citar            
MensajeEscrito el 26 Sep 2008 12:54 pm
Necesito guardar en tiempo de ejecución (del swf) un valor en un archivo externo.
He probado con un archivo XML pero no se cómo guardar el valor que le asigno a un nodo:

Código :

ARCHIVOXML.nodo1 = "hola"; //Asignado, pero no guardado en el archivo!!.


¿Se puede hacer esto?. ¿Sería mejor guardar en .txt?



S2.

Por randomize

24 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Sep 2008 01:06 pm
Pongo cómo trato de hacerlo:

Código :

import flash.net.URLLoader;
import flash.net.URLRequest;

var RUTA_NIVELESXML:URLRequest = new URLRequest("niveles.xml");
var CARGADOR_NIVELES:URLLoader = new URLLoader;
var NIVELES:XML;

function CargaNiveles(e:Event):void
{
   NIVELES = new XML(CARGADOR_NIVELES.data);
   NIVELES.SELEC = "hola";
}

CARGADOR_NIVELES.addEventListener(Event.COMPLETE, CargaNiveles);
CARGADOR_NIVELES.load(RUTA_NIVELESXML);



S2.

Por randomize

24 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Sep 2008 03:40 pm
Si mal no entiendo, quieres escribir un valor en un archivo externom mírate http://flash-db.com/Tutorials/savingAS3/
No incluí un XML porque es mas difícil, los XML usualmente se usan para cargar info, no para guardarla

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Oct 2008 01:03 pm
Gracias Jorge. Interesante link.
Explico hasta donde he podido llegar :oops: :
Tengo metido en un archivo.txt esto:
pepe=123

Para leerlo este dato me he decantado por utilizar:

Código :

      private function Carga(nombreArchivo:String):void
      {
         var loader:URLLoader=new URLLoader();
         
         loader.dataFormat=URLLoaderDataFormat.VARIABLES;
         loader.load(new URLRequest(nombreArchivo));
         
         loader.addEventListener(Event.COMPLETE,carga);
         
         function carga(event:Event):void
         {
            trace(loader.data.pepe);
         }
      }


Pero...¿no hay forma de cambiar el valor de la variable "pepe" por otro y guardar los cambios en el archivo.txt sin utilizar SharedObjects?
He estado probando con FileReference.save() (de Flashplayer 10) pero no quiero que me salga el directorio donde guardar el archivo.txt.

S2.

Por randomize

24 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Oct 2008 01:12 pm
Debido al sandbox del FlashPlayer, no puede acceder al disco para guardar archivos sin intervención del usuario. Para ello deberías utilizar Air o ir desde un ejecutable (proyector)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 31 Oct 2008 02:55 pm
Gracias nuevamente ^^ .
Y nuevamente tengo un problema :shock:. Trabajando con SharedObjects y varios swfs he creado 3 archivos con estos contenidos respectivamente:

Archivo Utilidades.as:

Código :

public static var SO:SharedObject = SharedObject.getLocal("archivo");


Archivo file1.as:

Código :

Utilidades.SO.data.ejerActual = "Compara multiplicaciones";
Utilidades.SO.flush(); /*Se supone que esta funcion guarda en disco los datos pero si la quito se guardan igual. No entiendo esto.
Si en este mismo fichero hago esto:*/
Campo.txt = Utilidades.SO.data.ejerActual;
//No me da ningún error. Lee lo que hay en disco.


Archivo file2.as:

Código :

//En cambio en otro archivo esto me da error diciendome que "ejerActual" de sharedObject está vacío.
Campo.txt = Utilidades.SO.data.ejerActual;



S2.

Por randomize

24 de clabLevel



 

firefox
Citar            
MensajeEscrito el 31 Oct 2008 03:50 pm
En el otro archivo debes definir utilidades.SO haciendo un SharedObject.get

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 31 Oct 2008 04:15 pm
No lo entiendo. Lo simplifico con dos asrchivos solamente. ¿Te refieres ha hacer esto?:
Archivo1.as:
var SO:SharedObject = SharedObject.getLocal("archivo");
SO.data.ejerActual = "hola";

Archivo2.as:
var SO:SharedObject = SharedObject.getLocal("archivo");
mc_PAGINA2.ejercicio_txt.text = SO.data.ejerActual; //Error!!


S2.

Por randomize

24 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Nov 2008 12:42 pm
Usa el segundo argumento para darle un path y hacerlo accesible a todas tus pelis

var SO:SharedObject = SharedObject.getLocal("archivo", "/");

Mira la ayuda para ver como puedes limitar la accesibilidad

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 Nov 2008 04:15 pm
¡Gracias!, era eso.

S2.

Por randomize

24 de clabLevel



 

firefox

 

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