Busca lo que quieras

Llamar función AS3 desde javascript con parámetros

Hola amigos.

Si querremos llamar una función flash desde javascript, sería de la siguiente manera.

Suponiendo que hemos utilizado swfobject para la impresión del flash sobre la página de la siguiente manera:

swfobject.embedSWF("Index.swf", "nuestroflash", "100%", "100%", "10.0", '', flashvars, params, attributes);

Entonces nos damos cuenta que el id que le colocamos a nuestro flash es "nuestroflash".

Entonces para llamar la función de flash pondremos lo siguiente en javascript:

//código javascript
            var flashObj = document.getElementById('nuestroflash');//traer instancia del flash con el id
            flashObj.nombredelafuncion("este es mi nombre", "este es mi apellido"); //llamar la funcion con 2 parametros

            //pueden enviarse los parametros que se quieran, 3,4, 5 o más o ninguno.


Si se quiere, se puede colocar ese código dentro de una función javascript, o como deseen.

Es importante tener en cuenta que el código javascript se debe ejecutar en cualquier momento, pero inmediatamente después que este cargado el flash.
Ahora bien, para que funcione ese llamado de la función, hay que registrarlo en el código AS3. De la siguiente manera, si se desea, mejor en el primer frame de nuestro FLA.


//código AS3
// registrar al flash la función
//con respecto a la linea siguiente, solo se coloca el nombre de la función, sin parámetros.
//el primer parámetro de addCallback es el nombre de la función javascript, y el segundo, la función que llamará en AS3. Para no confundirnos sencillamente dejo el mismo nombre a los dos parámetros.

ExternalInterface.addCallback("nombredelafuncion", nombredelafuncion);
function nombredelafuncion(parametro1:String, parametro2:String){

     //haz ahora si lo que quieras desde javascript
}

Como vimos en el AS3, debemos de colocar el tipo de variable que estamos enviando por el javascript. En este caso, dos cadenas de texto.

Bueno, espero les sirva de algo. Sean felices! ;)

Dar las gracias es siempre agradable. Si tienes dudas, has tu comentario y pregúntame...

8 comentarios:

  1. donde estan los archivos para descargarlos?

    ResponderEliminar
  2. Lamento decirte que no deje publicado un ejemplo para descargar... solo el código. Saludos.

    ResponderEliminar
  3. Hola estoy muy interesado en este tema (parece muy sencillo) pero no consigo que funcione de ninguna manera. Desde AS3 llamar a la función javaScript Lo hago sin problemas pero a la inversa no lo consigo.

    Si fuera posible me encantaría ver un ejemplo funcional para probar. Te dejo mi correo por si tuvieras el detalle de remitirme

    Gracias de antemano.

    ResponderEliminar
    Respuestas
    1. drawdesign@gmail.com Se me olvidó poner el correo :).

      Eliminar
    2. Coloca tu codigo html como imprimes el swf.

      Coloca el codigo as3 que registra la función.

      Eliminar
  4. Hola! yo tengo el mismo problema que Alberto Sànchez.
    Desde AS3 llamo sin problemas la funciòn en javascript pero una vez ejecutando la funciòn javascript ya no regresa al Flash.
    En el AS tengo esto:
    package {

    import flash.display.MovieClip;
    import flash.events.MouseEvent;
    import flash.external.ExternalInterface;
    import flash.text.TextField;

    public class main extends MovieClip {

    public var mcPrueba:MovieClip;
    public var txtTrace:TextField;

    public function main() {
    init();
    }
    private function init():void{
    ExternalInterface.addCallback("myFlashcall",myFlashcall); //Registra la funciòn que se llama desde el javascript
    mcPrueba.addEventListener(MouseEvent.CLICK, onClick);
    }
    public function myFlashcall(str:String):void{
    txtTrace.text = "myFlashcall: "+str;
    }
    protected function onClick(event:MouseEvent):void{
    ExternalInterface.call("myFBcall");
    }
    }
    }

    y en el HTML tengo esto:
    function myFBcall(){
    alert("Se invoca la funciòn desde el Flash");
    var varMyFlash = document.getElementById("myFlash");
    alert("si creò la variable Flash");
    varMyFlash.myFlashcall('datoDesdeJavascript');
    alert("Finalizarìa");
    }

    Ya no llega a la alerta "Finalizarìa" :-( Alguna idea?
    Muchas gracias

    ResponderEliminar
  5. Aah ya lo pude resolver.
    Por si alguien llega aquì buscando la respuesta; pues resulta que era la manera de cargar el SWF.
    No puse atenciòn en la parte donde cargabas el swf con la librerìa swfobject.embedSWF.
    Y como hacer caso de eso si yo no tenìa ni zorra idea que existìa tal cosa.
    Acà incluyo la info que explica la librerìa:
    http://blog.unijimpe.net/swfobject-20/
    Saludos ^^

    ResponderEliminar
    Respuestas
    1. Me alegra que hayas podido solucionar tu problema. Y que de algo te haya ayudado este post.

      Saludos.

      Eliminar

Palabras Clave

.NET (93) AJAX (2) ajaxcontroltoolkit (2) Algoritmos (1) android (1) Angular (1) Arrays (1) AS2 o ActionScript 2.0 (1) AS3 o ActionScript 3.0 (64) ASP (7) ASP.NET (3) Azure (1) Azure DevOps (2) Backup (2) Batch (4) blogger (1) Browser Support (2) C# (53) Charts (1) Chorme extensions (1) Chrome (3) cmd (18) código postal (1) Colombia tips (1) command (1) Conexion remota (1) Controles Web .NET (24) Cookies (1) cordova (1) CSS (14) CSV (5) Cufon (1) DateTime (2) deployment (2) Desarrollo movil (2) Desarrollo web (5) Diseño (4) DNN o DotNetNuke (5) docker (1) Encuestas (1) Entity Framework (1) Error (1) Eval (2) Excel (4) Expresiones regulares (2) Facebook (14) fechas (1) Fiddler (1) FileUpload (1) Filezilla (1) Firefox (2) Flash (9) Fonts (3) FQL (1) frameworks (2) Futuro de la web (1) git (1) Google Code (13) Google Maps (4) hackintosh (3) hazard 10.6.2 (3) herramientas para developers (1) highchart (1) Hilos (2) Hosting Windows (18) HTML (38) HTML5 (6) IDE (1) IE (2) IE9 (1) IIS (13) imagenes (3) jasmine (2) java (1) jqgrid (2) Jquery y Javascript (90) jquery-ui (5) jQueryMobile (1) JSON (1) knockout (4) library (1) Link Interesantes (2) List (1) Macro (2) Matemáticas (2) Membership (6) Memoria (1) Mis Experiencias (3) momentjs (1) ms-dos (1) MSN (1) MVC (1) MVC4 (3) MySQL (2) node.js (4) Notepad++ (3) Notificaciones (1) ObjectDataSource (2) Online (2) Opinión (4) OSX (3) Parallels Plesk Panel (1) petapoco (1) PhantomJS (1) PHP (4) Porqué este blog (1) Powershell (1) Razor (3) Redes (2) REGEX (4) REST (1) SDK Android (1) Seguridad (1) SelectParameters (1) Selenium (2) sencha (3) sencha cmd (2) SEO (1) SMTP (2) Software útil (8) Solución (1) Soporte (1) SQL (15) SQL Server (58) SQLite (2) Store Procedures (20) String (5) Testing Code (2) texto (2) tips de datos (1) tips de desarrollo (1) TutoFaceAS3 (4) TutoProAS3 (4) Tutoriales (7) Tweenlite effects (3) Últimas noticias (1) unit testing (1) usb (1) VBA (1) Video (1) virus (1) Web API (2) Web Browsers (1) Web Forms (7) web.config (1) Webmaster (8) Webmatrix (1) webrole (1) webservices (1) webstorm (1) Win Forms (5) Windows (21) Windows 7 (1) Windows 8 (1) XML (2) Youtube API (2)