Comunidad de diseño web y desarrollo en internet

AS3: guardar objeto en base de datos

Citar            
MensajeEscrito el 19 Abr 2009 12:20 am
hey!
:)

estoy trabajando en una aplicacion en flex donde el usuario puede guardar sus preferencias (posicion y dimension de ventanas diferentes).
Creo que tengo que usar algo como ByteArray para serealizar el objeto y guardarlo en la bbdd (MySQL).
Alguna idea?

mientras tanto seguire averiguando sobre ByteArray :)

gracias!

Por Acreonte

Claber

1646 de clabLevel

5 tutoriales
7 articulos

Genero:Masculino  

Digital Scientist

firefox
Citar            
MensajeEscrito el 19 Abr 2009 02:42 am
guardar su preferencias ?????
:? :? :?

Por xcom

Claber

530 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Abr 2009 08:29 pm

xcom escribió:

guardar su preferencias ?????
:? :? :?

erm... si! :P
osea, mi pagina web es una pagina de juegos en-linea, cada usuario registrado podra cambiar ciertos elementos en la pagina y guardar sus cambios, asi cuando visites el perfil de "usuario-x" podras ver por ejemplo el color de fondo escogido por dicho "usuario-x".
A eso le llamo "preferencias", si el buscador esta abierto o no, si se muestra el juego de la semana...

Entonces de momento estoy enrredado con lo que tengo que guardar, no se como guardar un array de objetos :oops:

salut

Por Acreonte

Claber

1646 de clabLevel

5 tutoriales
7 articulos

Genero:Masculino  

Digital Scientist

firefox
Citar            
MensajeEscrito el 20 Abr 2009 06:43 am
supongo que con los métodos ReadObject y writeObject de un ByteArray.
En cualquier modo hago un comentario. La cosa funcionaría igual si guardamos en la base de datos los datos sueltos.
Otra cosa, si esos datos no quieres que sean públicos, esto es que sólo el usuario los pueda ver/modificar, sería mejor emplear SharedObject -las cookies de Flash-

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Abr 2009 01:03 pm
hey Eliseo! :)

He probado con el ByteArray asi:

Código :

//... Script
[Bindable]
private var prefs : ByteArray = new ByteArray();

private function savePreferences() : void
{
        var arregloDeObjetos : Array = miArrayDeObjetos;
        prefs.writeObject(arregloDeObjetos);
        prefs.position = 0;
        var params : Object = new Object();
        params.preferences = prefs;
        savePrefs.send(params);
}


y en MXML:

Código :

<mx:HTTPService id="savePrefs" url="http://domain.com/save.php" /> 


y no quiere :(
si pongo prefs.preferences = "algun string"; si funciona pero no si es ByteArray.

Por cierto, si quiero que esa data sea publica por eso no me funcionaria el SharedObject.

gracias!

Por Acreonte

Claber

1646 de clabLevel

5 tutoriales
7 articulos

Genero:Masculino  

Digital Scientist

firefox
Citar            
MensajeEscrito el 21 Abr 2009 01:19 pm
Estás tratando de guardar un array de objetos. en tal caso los tienes que guardar uno a uno. Y, para ello conviene guardar el número de elementos del array
Ejemplo sencillo

Código ActionScript :

var prefs : ByteArray = new ByteArray();

var arregloDeObjetos : Array = new Array( { id:1, value:"Hola" }, { id:2, value:"Adios" } );
prefs.writeInt(arregloDeObjetos.length);  //guardamos la longitud del array
for each (var dato:Object in arregloDeObjetos) {
   prefs.writeObject(dato);  //escribimos cada Objeto
}
//es ese prefs el que tienes que guardar en tu base de datos


//cuando queramos rescatar los datos, una vez leído el valor
prefs.position = 0;
var index:int = prefs.readInt();  //leemos la cantidad de datos
var params : Object = new Object();
for (var i:int = 0; i < index;i++){
   params = prefs.readObject(); //leemos cada objeto
   for (var prop:* in params){
      trace(params[prop]);
   }
}

si sólo quisiéramos tener un objeto simple es más sencillo pues es simplemente

Código ActionScript :

var prefs : ByteArray = new ByteArray();

var miobjeto= { id:1, value:"Hola" };
prefs.writeObject(dato);  //escribimos cada Objeto
//es ese prefs el que tienes que guardar en tu base de datos

//cuando queramos rescatar los datos, una vez leído el valor
prefs.position = 0;
var params : Object = new Object();
params = prefs.readObject(); //leemos el objeto
for (var prop:* in params){
   trace(params[prop]);
}

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Abr 2009 11:29 pm
gracias Eliseo, ya logre guardar los objetos como me has dicho.
Ahora el problema es cuando el evento regresa con la data, es una string y no le gusta cuando le digo que sea un ByteArray :(

Código :

var recoveredBA : Object = event.result;
trace("recoveredBA: " + recoveredBA); // muestra string con la data
trace("recoveredBA: " + recoveredBA as ByteArray); // muestra null

Esta un poco confuso esto sinceramente, no se si mejor guardar la data de otra forma.
El problema es que mis objetos tienen muchas propiedades. Quiza sea mejor olvidarme del tal ByteArray y guardar algo que pueda controlar mas facilmente (aunque no se el que... :P)

un saludo!

Por Acreonte

Claber

1646 de clabLevel

5 tutoriales
7 articulos

Genero:Masculino  

Digital Scientist

firefox
Citar            
MensajeEscrito el 22 Abr 2009 02:52 pm
Creo que lo mejor seria que crearas una estructura de xml que guarde toda la configuracion.
Asi cuando quieras mostrar denuevo la interfaz, acomodas los objetos segun la informacion en el xml.

Por Lunaty

Claber

118 de clabLevel



Genero:Femenino  

Flash Developer & RM Email Support for Google

firefox
Citar            
MensajeEscrito el 22 Abr 2009 11:19 pm
con mucha verguenza lo digo, he resuelto el problema de la forma menos elegante. En vez de un ByteArray de los objetos a guardar, la aplicacion envia a la base de datos un string similar a:

Código :

var preferencias : String = tema1, x, y, w, h& tema2, x, y, w, h;

luego con un split("&") separo temas y con un split(",") separo propiedades

Muy feo pero funciona :D

gracias por la ayuda! a ambos!

Por Acreonte

Claber

1646 de clabLevel

5 tutoriales
7 articulos

Genero:Masculino  

Digital Scientist

firefox

   Página 1 de 1

 

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