Seguramente habrán visto muchas animaciones en Internet que utilizan la clase LocalConnection. Este tipo de comunicación entre películas Flash es muy común verlo en la publicidad rich media, allí aparecen distintos SWF que se comunican entre si.

(Either JavaScript is not active or you are using an old version of Adobe Flash Player. Please install the newest Flash Player.)

Recuerdo haber visto una vez una animación de un nadador que aparecía sentado en el logo de la página, luego de unos segundos hacía un clavado hacia la parte inferior del sitio, hasta que llegaba al pie y se zambullía, INCREÍBLE!!!. Luego me enteré que con creatividad y LocalConnection, esto era posible. En este caso seguramente habían 3 animaciones Flash, una con el nadador en la parte superior, otra con el nadador haciendo el clavado y otra con la animación del nadador entrando en clavado al agua. Eso sí, cada vez que una animación terminaba su función, se comunicaba con la otra para pasarle la posta. Por medio de javascript, se transportaba un Div absoluto con el nadador de espalda cayendo hacia la pileta. Esto permitía que el contenido del sito se pudiera seleccionar, sin la necesidad de hacer un única película flash vertical con toda la animación.

Hay dos ejemplos de empresas importantes que se dedican a Rich Media, una de ellas es Media Mind y la otra es Double Click.
Aquí pueden entrar a sus respectivas galerías y ver ejemplos de este tipo de animaciones.

(Either JavaScript is not active or you are using an old version of Adobe Flash Player. Please install the newest Flash Player.)

En nuestro ejemplo vamos a ver la famosa Jabulani (pelota oficial del mundial de Sudáfrica 2010) picando en la base de un SWF y elevándose hasta la cima del otro, hasta volver a caer de forma cíclica ¿interesante verdad? bueno, ahora vamos a ver como logramos esto.

Teóricamente, lo que hacemos es alertar al otro SWF que puede aplicar una acción en determinado momento, o sea que tenemos un objeto emisor y otro receptor; en este caso los dos objetos funcionan de emisor y de receptor en determinados momentos, de esta forma podemos lograr que la animación sea cíclica.

Observemos el SWF superior, aquí comienza el juego, hay una interpolación de la pelota cayendo, hasta que la misma sale del cuadro por la parte inferior, aquí es dónde hay un llamado al otro SWF para avisarle que puede disparar la animación de la pelota entrando desde la parte superior hasta picar en la base. Posteriormente, cuando la pelota en este último SWF vuelve a subir y salir del cuadro, le avisa al SWF superior que dispare la interpolación en donde la pelota se anima desde la parte inferior hasta picar en el techo.

Ahora veamos qué animaciones y qué líneas de programación necesito para aplicar la teoría que mencionábamos recién.  Si bien tenemos dos archivos FLA (local-1 y local-2), los mismos son muy similares, y prácticamente luego de guardar al segundo con otro nombre, serán muy pocas las modificaciones que tengamos que hacer. Básicamente lo que hago es una interpolación de la Jabulani animada que termine y vuelva a empezar, o sea, la pelota picando como si estuviera en un lugar donde no existiera gravedad. Luego de esto, vamos a colocar etiquetas marcadores en la línea de tiempo, para indicar los lugares en que la pelota entra en acción según el SWF (inferior o superior). Abajo pueden ver una imagen con las líneas de tiempo de los dos Flash.

local-1.fla
Línea de tiempo 1

local-2.fla
Línea de tiempo 2

Luego de armar las animaciones, es dónde entra en juego la programación con el objetivo de comunicar ambos SWF.

Como se dijo anteriormente, las dos animaciones ofician de emisor y receptor, es por esta razón que tenemos que definir dos objetos LocalConnection en cada una de las animaciones. Observemos el código que aparece en el primer fotograma de la primer animación (local-1):

import flash.net.LocalConnection;

gotoAndPlay("start");

var up:LocalConnection;
up = new LocalConnection();
up.allowDomain('*');
up.client = this;
up.connect("jabulani-up");

function upBall(){
	gotoAndPlay("up");
}

//------------------------------

var down:LocalConnection;
down = new LocalConnection();
down.allowDomain('*');

Lo primero que hacemos es importar la clase LocalConnection de Flash. La acción gotoAndPlay(“start”); hace que saltemos al fotograma dónde arranca la animación con la pelota arriba. Luego creamos el objeto “up” que oficiará de receptor y estará escuchando a que la otra animación envíe el aviso para que se ejecute la función “upBall” y de esta manera animar la pelota desde abajo hasta el techo del cuadro y así posteriormente bajar.

Debajo creamos el otro objeto, en este caso el emisor, el cual nos permite hacer que cuando la pelota baja y sale del cuadro, envíe un llamado a la función “downBall” que se encuentra en la otra animación, esta línea aparece en el fotograma 65:

down.send("jabulani-down","downBall");

Ahora pasaremos a la segunda animación, la cual no tiene grandes diferencias con la primera.

import flash.net.LocalConnection;

stop();

var down:LocalConnection;
down = new LocalConnection();
down.allowDomain('*');
down.client = this;
down.connect("jabulani-down");

function downBall(){
	gotoAndPlay("down");
}

//-----------------------------

var up:LocalConnection;
up = new LocalConnection();
up.allowDomain('*');

Aquí la diferencia está en que el objeto receptor será “down” y el emisor “up”, definiendo la función “downBall” que cuando se ejecuta, no hace más que enviar la cabeza lectora al fotograma dónde se encuentra la etiqueta “down” qué es donde entra la pelota desde arriba hasta picar en la base. También podemos ver que en el primer fotograma de la animación, junto a la definición de los objetos tenemos que colocar un stop(); para que esta animación arranque detenida hasta esperar el gotoAndPlay(“down”); enviado por el otro SWF.
Al igual que en la primera, cuando termina la animación y la pelota vuelve a salir del cuadro, tenemos que llamar a la función del otro SWF y de esta manera, hacer que el juego se convierta en un loop.

up.send("jabulani-up","upBall");

Así es como podemos utilizar la clase LocalConnection para generar comunicación entre distintos flash que están abiertos. Estos pueden aparecer en el mismo HTML, en distintos HTML, simplemente abiertos con el player de flash desde tu máquina o insertos en distintos HTML desde distintos dominos, para esto último es que colocamos la siguiente línea de código.

down.allowDomain('*');

Bueno compañeros, hasta acá la explicación de cómo usar esta clase de FLash tan útil, ustedes ahora sabrán cuando ponerla en práctica. El sentido que le den, dependerá de vuestra creatividad.

Desde aquí podrán descargar los archivos utilizados en el ejemplo.

¡Hasta pronto!

Categoría: Multimedia, Tutoriales, Web

Publicado por: negro

Entradas más populares

2 Respuestas para “Comunicar dos SWF con LocalConnection”

Dejar una respuesta

XHTML: Tu pudes usar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>