Chamar uma função do AS3 através do AS2

Ycaro Brambila on outubro 14th, 2011 Sem comentários

E ai galera, depois de muito tempo voltarei a postar no blog do meu amigo Pablo.

Nós blogueiros do site PabloFerraz.com recebemos por email várias dúvidas de leitores, na qual decidimos ir postando no Blog para sanar não só a dúvida do mesmo, e sim servir de aprendizado a outras pessoas, então peço paciência a todos que tenham dúvidas e entraram em contato, pois iremos postar aos poucos.

Bom, vamos começar com um email do nosso leitor Renato Gualhardo de Santa Catarina:

“Pablo, tudo bem? Gostaria de saber se é possível eu chamar uma função criada no Action Script 3 através de um MovieClip carregado do Action Script 2? Por exemplo, no AS3 eu carrego um MovieClip feito em AS2 que terá que acionar uma funcionalidade dentro do AS3. Entende? Preciso muito de sua ajuda, e parabéns pelo Blog. Obrigado ”

Renato Gualhardo

Acredito que tenha entendido, vamos ver se é isso mesmo que o nosso leitor quer.

Para acionarmos uma função no AS3 através do AS2 necessitamos criar uma ligação entre os dois, ou seja, precisamos criar um “LocalConnection”.

Veja abaixo como é simples:

Abra um novo arquivo no Flash em Action Script 2, crie um MovieClip e instancie como “botao” (sem as aspas). Insira uma nova Layer e cole o seguinte Action:

//Cria uma variável para enviarmos informações da conexão
var enviaSWF:LocalConnection = new LocalConnection();
//Cria um botão
botao.onRelease = function() {
//Chamamos a variavel com as propriedades do "Nome da Conexão" e "Função que queremos chamar dentro do AS3"
enviaSWF.send("conectar","AnimaApresentacao");
};

Salve e exporte o SWF como “botaoAS2.swf”, ele ficará como abaixo:

Agora abra um novo arquivo em Action Script 3, cuja terá uma função dentro que acionará uma animação, e um MovieClip que carregará o SWF externo em AS2.

Neste caso criei uma animação simples na TimeLine, na qual transformei em MovieClip e instanciei como “apresentacao” (sem as aspas), estopando no primeiro frame para não ser visível no primeiro instante, e sim, só após de ter sido acionado pela função.

Criei também um outro MovieClip e instanciei como “mc” (sem as aspas), que será responsável pelo carregamento do SWF externo em AS2.

Crie uma nova Layer e cole o seguinte ActionScript:

/////////////////////Carregar arquivo externo////////////////////////
// cria uma instância do Loader
var carregador:Loader = new Loader();
// armazena na variável “arquivo” o nome do swf externo a ser carregado
var arquivo:String="botaoAS2.swf";
// cria uma instância do URLRequest, que carregará o swf armazenado na variável “arquivo”
var requisicao:URLRequest=new URLRequest(arquivo);
// Carrega o swf solicitado
carregador.load(requisicao);
// Inclui o swf carregado no Stage
mc.addChild(carregador);

/////////////////////Função a ser chamada////////////////////////////
//cria uma função
function AnimaApresentacao () {
apresentacao.gotoAndPlay(2);
}

/////////////////////Conexao entre os SWF////////////////////////////
//criar uma variavel que receberá a conexão do AS2
var recebeSWF:LocalConnection = new LocalConnection();
recebeSWF.client = this;
//ligamos aqui a conexao dos dois SWF's
recebeSWF.connect("conectar");

Salve e exporte no mesmo local que esta o SWF “botaoAS2.swf”.

Perceba que o arquivo em AS3 carregou normalmente o arquivo em AS2, agora clique em cima do botão que foi criado do AS2 e veja ele chamar a função dentro do AS3 responsável pela animação. Simples não é mesmo?

Espero ter atendido a sua dúvida Renato Gualhardo, e que esse post sirva de ajuda a mais usuários.

Vocês podem estar baixando os arquivos aqui usado logo abaixo no link:
CLIQUE PARA O DOWNLOAD

Agradeço a todos por mais este post, abraço e até a próxima.

Comentários

comentários

Tags: , , , ,

No Responses to “Chamar uma função do AS3 através do AS2”

Leave a Reply