Comunicación Flash-Javascript y viceversa

8 de octubre de 2005

Para continuar la saga de la carga de ficheros antes debemos solucionar el problema de comunicación entre nuestra aplicación Flash con el navegador.

Flash->Navegador

En sentido Flash->Navegador no tenemos grandes problemas porque el Flash nos permite ejecutar código javascript mediante el método getURL(). De esta manera, para llamar a una función simplemente tendremos que escribir lo siguiente:


getURL("javascript:subeFichero('"+Param1+"','"+Param2+"','"+Param3+ "');");

Cuidado, si los parametros contienen cadenas de texto habra que verificar que no incluyen comilla simple, y ponerles el caracter de escape correspondiente si lo hacen (\\’).

No profundizaré más en esta dirección porque es bien sencillo.

Navegador->Flash
La cosa aqui es un poquito mas compleja puesto que no existe un método directo para comunicarse desde el navegador con el Flash que incluye. En realidad esto no es totalmente cierto. Cuando cargamos una película Flash podemos pasarle una serie de parámetros mediante el parámetro FlashVars:

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" WIDTH="1" HEIGHT="1" id="comm">
<param NAME=movie VALUE="comm.swf">
</param><param NAME=FlashVars VALUE="test1=Value1">
<embed src="comm.swf" flashVars="test1=Value1" WIDTH="1" HEIGHT="1" NAME="comm">
</embed>
</param>
</object>

Para acceder a esta variable test1 desde Flash lo que haremos mediante _root.test1.
Claro está, esta película Flash nueva no es la película con la que queremos comunicarnos en realidad. Nuestra película objetivo suele estar en nuestra misma página HTML, y creada a la misma vez que la página. Para comunicarnos con ella utilizaremos de mensajera a la película comm.swf del código anterior.
En Flash podemos utilizar el objeto LocalConnection para comunicar dos películas Flash que se ejecuten en el mismo cliente. Perfecto para nosotros, que seguiremos el siguiente esquema de comunicación:

javascript->comm.swf->Flash.swf

Para hacer nuestro comunicador mas versátil le pasaremos como parámetros el nómbre del método a llamar, y la colección de parámetros que deben ejecutarse.

Con esto y un bizcocho, hasta mañana a las 8.

  • qrcode link