¿Quieres registrarte?

Pasar un array php a un swf mediante Flashvars

Citar            
MensajePublicado: 27 May 2009 02:47 pm
Hola a todos!

Tengo un problemilla. Necesito pasar un array de php a un documento flash que tengo insertado en el mismo php.

Primero creo mi array mediante un bucle leyendo el contenido de una base de datos, repitiendo en el bucle la siguiente orden:

$array[$id]= $lloc;

He comprobado en php y el contenido es correcto y se guarda perfectamente.

El problema viene cuando la quiero pasar a Flash mediante Flashvars. Sé pasar variables numéricas o de texto mediante este método y el archivo swf las muestra perfectamente. Pero los array es otra cosa. No se si se utiliza el mismo método que para pasar variables normales.

En los parámetros pongo esto:
<param name="FlashVars" value="array=<?=$array?>" />

Y en el embed esto otro:
<embed src="miphp.swf" Flashvars="array=<?=$array?>


En el flash, intento que salga el elemento 2 del array en un campo de texto que he creado, para comprobar si realmente lee el array.

texto.text=_root.array[2];

En el campo de texto sale undefined y los elementos del array no hay manera de que salgan.


¿Me podéis echar una mano, por favor?

tina89_bcn


clabLevel: 1 Genero:Femenino



  firefox
MP    
Citar            
MensajePublicado: 27 May 2009 06:15 pm
pasar un arreglo por Flashvars no es buena idea segun entiendo
eso de que el usuario pueda enviarle las variables que le guste a tu SWF...

te recomiendo que el arreglo de PHP lo conviertas en formato xml (desde el mismo PHP sin hacer .xml) y ya importes como si fuera xml
siento que es mas limpio y rapido

tribak
Claber

Héroes
clabLevel: 1769 Genero:Masculino
Kokiri's forest


3 Tips

  firefox
MP   Email   Web
Citar            
MensajePublicado: 28 May 2009 07:56 am
Como te digo ahora es desde HTML, porque de PHP... mas bien me resulta pesado por lo cual lo aparque hace tiempo.

Código :

'FlashVars', 'var1=variable1&var2=variables2'


Para pillarlo desde el SWF.

Código :

var varSWF1:String = LoaderInfo(this.root.loaderInfo).parameters.var1;


Espero que te sirva.

NiGGa


clabLevel: 33



  firefox
MP    
Citar            
MensajePublicado: 28 May 2009 08:13 am
@NiGGa y ahi como sabes el length de el arreglo?
por que dudo que quieras andar modificando el swf cada qeu modifiques la base de datos

tribak
Claber

Héroes
clabLevel: 1769 Genero:Masculino
Kokiri's forest


3 Tips

  firefox
MP   Email   Web
Citar            
MensajePublicado: 28 May 2009 08:24 am
Eso no es necesario... en el swf defines una variable que coja el nombre de la variables de la FlashVars, tan solo hay que mantener ese nombre de la variable del flashvar para que lo coja.

Tyna, miraria esto por si te ayuda.

Pasar arrays desde php a flash + CLab

"Meter" arrays en FlashVars (EN)

Andrés.

NiGGa


clabLevel: 33



  firefox
MP    
Citar            
MensajePublicado: 28 May 2009 12:36 pm
@tina89_bcn lo mejor que puedes hacer es usar SWFObject, te permite pasar variables por flashVars de una manera más sencilla y limpia. Después desde tu php conviertes el arreglo a un string y es lo que le pasas a flash:

Código :

var flashVars = {arreglo: "<?=implode('|', $array)?>"};


En flash lo que haces es convertir el string en arreglo de nuevo

Código :

var myArreglo:Array = arreglo.split("|");

elchininet
Claber


clabLevel: 3575
España

5 Tutoriales
11 Tips

  firefox
MP    
Citar            
MensajePublicado: 09 Jun 2009 03:04 pm
Hola a todos! muchas gracias por vuestras respuestas!

Tribak, necesitaba usar PHP porque me resultaba más sencillo. Tenías razón en que necesitaba la longitud del arreglo para poder generar tantos botones como entradas hubiera en la base de datos, a partir de la longitud del arreglo no necesito rehacer el swf cada vez que se inserte un nuevo elemento en la base de datos.

Finalmente utilicé el método de elchininet. mediante un bucle en el php, leo los elementos de la base de datos y los voy guardando como una cadena con los elementos separados por comas:

Código :

$array_nom.=$nom.',';


Seguidamente, con str_replace sustituyo los caracteres conflictivos (&, ', ", etc) y los espacios, que en flash tambien me daban problemas.

Código :

$str_noms = str_replace(" ", "_", $array_nom);


Luego inserto en el flash mediante flashvars, la variable resultante:

Código :

<param name="Flashvars" value="str_noms=<?=$str_noms?>"/>
<embed src="miphp2.swf" Flashvars="str_noms=<?=$str_noms?></embed>


En el swf, declaro la funcion que me permitirá recuperar los caracteres que sustituí en el php.

Código :

String.prototype.reemplazar = function(termino1, termino2) {
   var temp_array = this.split(termino1);
   var new_cadena = "";
   for (var k = 0; k<temp_array.length; k++) {
      new_cadena += temp_array[k]+""+termino2;
   }
   new_cadena = new_cadena.substring(0, new_cadena.length-termino2.length);
   return new_cadena;
};



Finalmente leo la variable Flashvar que entrará en el swf, y la transformo en un array:

var nom:Array = str_noms.split(',');

Ahora ya tengo el array, del cual sacaré la longitud para generar el número de botones que necesito para cada entrada de la base de datos. La aplicación ya casi está terminada.

Muchas gracias a todos por vuestra ayuda!

tina89bcn


clabLevel: 10 Genero:Femenino



  firefox
MP    
Citar            
MensajePublicado: 09 Jun 2009 06:06 pm
Aunque es una opción es mejor que en el php leas los resultados y generes con ellos un XML y esto es lo que lees desde flash, te evitarás muchos problemas, entre ellos el de convertir todos los caracteres conflictivos.

elchininet
Claber


clabLevel: 3575
España

5 Tutoriales
11 Tips

  firefox
MP    

   Página 1 de 1

Responder al tema
Respuesta Rapida


 

 

Cristalab BabyBlue + BloodBerry © 2007 Cristalab
Powered by phpBB © 2001, 2007 phpBB Group

3 6 7 8 10 11 12 14 15 17 18 28 34 38 40 44 45 46 47 48 49