LLamar funcion javascript desde flash

Esta es una pregunta que me la han hecho bastante seguido
¿Como invocar una funcion javascript desde flash?
Aqui les paso las 2 opciones y les explico cual es la mejor y el por que?

Primera opcion deprecada: :-( usar getURL()

  • Esta opcion es solo para las peliculas flash que esten echas con la version actionscript 2.0
  • Cuando usamos esta metodologia lo que hacemos es invocar una url en el browser.
    por ejemplo el IExplorer reproduce un sonido (el sonido de ‘iniciar exploracion’ especificamente) cada vez que se clickea en un link, o en este caso cada vez que se manda llamar la funcion getURL desde una pelicula de flash. Entonces cada vez que se executa este evento se escucha el sonido y esto puede resultar molesto

Codigo ejemplo:

//call javascript function 

    getURL("javascript:alert('Hack')");

//http://lucasmatos.com.ar/flexcoderBlog/

Segunda opcion optimizada: :-) usar ExternalInterface

  • Esta opcion es la mejor porque funciona en Actionscript 2.0 y 3.0
  • Gracias a esta metodologia con esta funcion, en Actionscript 3 aparte de invocar funciones de javascript (ExternalInterface.call()), tambien podemos escuchar funciones de javascript (ExternalInterface.addCallback()) es decir que podemos pasar parametros a flash desde un javascript :-)
  • Otra ventaja es que cuando usamos esta funcion al invocar la colocamos los parametros que recibe separados y no usamos un string concatenado com se hace cuando se usa el getURL()
//call javascript function 

   flash.external.ExternalInterface.call ("alert", "Hello");

//http://lucasmatos.com.ar/flexcoderBlog/

Filed under: Flash, actionScript 2.0, actionScript 3.0, javaScript, , , , , ,

8 Responses

  1. Federico Says:

    Hola!
    Te hago una consulta.
    Estoy usando la librería de ajax “Clearbox”. Pero no puedo hacerla funcionar desde flash. En html para que el vínculo funcione es:

    INSTITUCIONAL

    A simple vista uno se da cuenta que debería pasar por el flash pero no se como:
    rel=”clearbox[width=760,,height=500]”

    Te doy gracias por tu tiempo.
    Saludos!

    Posted on September 21st, 2009 at 9:55 am

  2. Lucas Matos Says:

    estuve leyendo la documentación y podes abrir las ventanas manualmente invocando una función javascript
    CB_Open();
    y puedes pasar parámetros
    ojo ; siempre tiene que tener el parámetro href
    ejemplo:

    javascript function

    CB_Open(’href=mycontent,parameter2=value 2,parameter3=value 3′);

    desde actionscript seria así:

    flash.external.ExternalInterface.call (”CB_Open”, “http://lucasmatos.com.ar/”,”parameter2″);

    //http://lucasmatos.com.ar/flexcoderBlog/

    Posted on September 28th, 2009 at 10:13 am

  3. Wahrsagen Says:

    Fantastic, very interesting issue. I will blog about it as well!

    Posted on February 16th, 2010 at 7:55 am

  4. pablo Says:

    hola lucas

    creo que nos hemos contactado en el pasado, pero no recuerdo bien en que momento. por favor me escribis al email que deje, quiero comentarte algo, gracias.

    Posted on February 25th, 2010 at 1:07 am

  5. Jason K. Says:

    Great job on your blog. reciprocal link checker

    Posted on March 17th, 2010 at 3:40 pm

  6. Download The Hills Have Eyes Says:

    I enjoyed reading your blog.

    Posted on March 31st, 2010 at 6:41 pm

  7. Fluecegalia Says:

    Thank you - I liked this post. Anyway the time will pass and we will see if you are right or not. Have a nice day and regards from New Zeland!
    Chris
    My site

    Posted on May 21st, 2010 at 3:59 pm

  8. JohnLBA Says:

    It’s very good article.

    Posted on May 23rd, 2010 at 10:55 pm

Leave a Reply