JavaScript executando um ActionScript
Posteriormente estarei postando um exemplo mais completo de toda a classe ExternalInterface(), ao qual é responsável pela integração FlashPlayer / JavaScript.
A pergunta é: Como enviar informações para dentro do FlashPlayer com JavaScript?
A Resposta é: Com ExternalInterface.addCallBack().
sua implementação:
//import import flash.external.Externalnterface; //ExternalInterface trabalha com métodos e atributos státicos ExternalInterface.addCallBack(functionName:String, closure:Funcion);
addCallBack recebe 2 parâmetros:
functionName:String = Coloque entre aspas o nome da função la do JavaScript.
closure:Funcion = Aqui vai o nome da função aqui do Flex (no caso) que sera executada
import flash.external.ExternalInterface;
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
width="500"
height="200"
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
applicationComplete="Main(event)" xmlns:text="flash.text.*">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import flash.external.ExternalInterface;
private function Main(e:FlexEvent):void
{
var debug:String = "";
try
{
ExternalInterface.addCallback("enviaParaFlash", recebeDoJavaScript);
}
catch (error:SecurityError)
{
debug += "Um erro de Segurança ocorreu: " + error.message + "\n";
}
catch (error:Error)
{
debug += "Um erro ocorreu: " + error.message + "\n";
}
trace(debug);
}
private function recebeDoJavaScript(param:String):void
{
Alert.show(param.toString());
}
]]>
</mx:Script>
</mx:Application>
Certio? Ainda não acabamos, ainda tem a parte do JS, então va no seu HTML que tem o embed do FlahPlayer e insira esse javascript no corpo (
) do seu código.
function retornaObjetoFlashPlayer(id)
{
//Se IE
if (navigator.appName.indexOf("Microsoft") != -1)
{
return window[id];
}
else
{
return document[id];
}
}
//Executado pelo flash
function alerta(paramTexto)
{
returnaObjetoFlashPlayer('id_seu_flash').alerta(paramTexto);
}
<input type="text" id="inpAlerta"/>
<input type="button" value="Alertar dentro do FlashPlayer" onclick="alerta(document.getElementById('inpAlerta').value)" />
Estanhou alguma coisa? A Função returnaObjetoFlashPlayer recebe o id como parâmetro, esse id é substituído pelo id do filme do flashplayer. Normalmente esse tipo de código é gerado automaticamente e o id do seu filme é o mesmo que o nome do seu arquivo:
exemplo:
nome do arquivo: “main.swf”
nome do seu id: “main” (normalmente)
Neste caso:
retornaObjetoFlashPlayer('main').alerta(paramTexto);
O JavaScript entende que o Flash embutido na página também se torna um objeto parte da página e assim pode acessa-lo de certa forma, enviar e trazer parâmetros.
função nomeDaFunção1 (parametros)
{
//Mesmo nome a função
id_FlashPlayer.nomeDaFunção1 (parametros)
}
Okay, ficamos nisso hoje, posteriormente postarei sobre toda a Classe ExternalInterface