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


Leave a Comment

(required)

(required)

Formatting Your Comment

The following XHTML tags are available for use:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

URLs are automatically converted to hyperlinks.