Pregunta

Estoy tratando de editar un poco de flash para hacer una llamada externa a la función de JavaScript, pero sin éxito. Aquí está mi código actionscript 2.0:

//testing external .js calls

import flash.external.ExternalInterface;

//attempting to make external js call

ExternalInterface.call("createPlaylist","It's my Life!");

y aquí está mi javascript;

function createPlaylist(mess){
  alert("called createPlaylist: " + mess);
}

He visto muchos ejemplos y estoy principalmente confundido acerca del uso de ExternalInterface.addCallback . No necesito el javascript para devolver nada a flash, ¿es necesario?

Por alguna razón, nunca veo la alerta. ¿Alguien ve algún problema en mi código? ¿Hay alguna biblioteca ExternalInterface que no tengo? Además, ¿cuál es la MEJOR forma de utilizar ExternalInterface (es decir, comprobación de errores, etc.) Gracias de antemano ...

¿Fue útil?

Solución

ExternalInterface.addCallback es para que javascript pueda llamar a su aplicación Flash. Si, por ejemplo, desea un botón HTML que inicie / detenga un video, simplemente agregue una devolución de llamada para un método con nombre y su js puede llamar al [FlashObject] .callback nombre del método.

Diría que la mejor manera de agregar métodos de interfaz externa en su aplicación es configurar una clase responsable de la comunicación JS para cada caso de interacción en la aplicación. Por ejemplo:

public class ExternalVideoControl {

    private var video:MediaDisplay;

    public function ExternalVideoControl(video:MediaDisplay) {
        //ExternalInterface.addCallback  - one callback for each method you want to expose, pointing to a method within this class;
        //add listeners on the video player and point them to methods in this class, for example onProgress
    }
    public function playVideo():void {
        //play the video on the mediaDisplay
    }
    private function onProgress(event:ProgressEvent):void {
        //ExternalInterface.call - report progress back to javascript
    }
}

Para probar ExternalInterface más directamente, intente llamar a

ExternalInterface.call("alert", "Hello World!");

Otros consejos

Como otros dijeron en los comentarios a la publicación de Johan, primero debe verificar si la Interfaz Externa está disponible marcando ExternalInterface.available.

Aparte de eso ... ¿cómo se inicia la aplicación Flex? Primero debe incluirse en un contenedor que contenga este JavaScript, por supuesto. Eso es trivial Sin embargo, en caso de que lo inicie como archivo desde el sistema de archivos local (la URL del navegador comienza con el archivo: //), también debe asegurarse de que el archivo SWF tenga los permisos necesarios para ejecutar una función de JavaScript.

Debe confiar en el archivo SWF para que pueda acceder a recursos locales como archivos o JS en archivos locales. Para hacerlo, cree un archivo como myapp.cfg y agregue la ruta a su archivo como una sola línea a esta línea. Coloque este archivo en la carpeta FlashPLayerTrust. En sistemas Linux, esto es ~ / .macromedia / Flash_Player / # Security / FlashPlayerTrust /.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top