Cristalab

Comunicar SWFs con LocalConnection

Por: Wanaya
6 de Febrero del 2006
1098 de clabLevel
Otros artículos de Wanaya
42,475 visitas

A veces tenemos la necesidad de comunicar SWFs que no estén uno dentro de otro, es decir en lugares diferentes. En este tutorial veremos cómo hacerlo.

Usaremos LocalConnection, una clase de flash que sirve precisamente para esto, enviar información a otro SWF sin necesidad de usar los fscommand que tanto nos complican la vida.

Usaremos los siguientes métodos de la clase LocalConnection:

.connect(nombreDeLaConexion:String):Bolean
Este método solo recibe el nombre de la conexión con que será conocida en el otro swf, devuelve true si la conexión tuvo éxito y false y ocurrió algún error.
.close():void
Este método sirve para cuando ya no se use mas la conexión hecha con Connect() .
.send(nombreDeLaConexion:String,metodoEjecutar:String,[argumentos:Object]):Boolean
Este es uno de los métodos mas usados de esta clase, se utiliza después de haber hecho la conexión con conect() envía el nombre de la conexión, la función que se va a ejecutar y los argumentos de esta.

Bueno haremos una pequeña conexión que enviará una variable y la sumará en el otro swf.

Código del swf que enviará datos:

//creamos la conexión
var enviar_lc:LocalConnection = new LocalConnection();
//la variable
var dato:Number=1;
boton.onPress=function(){
  //enviamos los parámetros correctos, ya mencionados arriba.
  enviar_lc.send("nombreCX","metodo",dato);
}

Código del swf que los recibe:

//creamos una caja de texto donde veremos los resultados de la conexión
this.createTextField("resultado_txt", 1, 10, 10, 100, 22);
result_txt.border = true;
//creamos la variable de conexión donde recibiremos los datos
var recibir_lc:LocalConnection = new LocalConnection();
//en el método "metodo" se ejecutara con los parámetros que se envían
//desde el otro swf
recibir_lc.metodo = function(argum1:Number) {
  //convertimos el valor que hay en la caja de texto a tipo numérico
  aux=int(resultado_txt.text);
  //el valor que teniamos en la caja de texto le sumamos el argumento pasado
  aux+=argum1;
  //lo mostramos
  resultado_txt.text = aux;
};
//hacemos la conexion.
recibir_lc.connect("nombreCX");

Nota: El SWF que envia datos debe de tener un botón con el nombre de instancia: “boton”

Verán que la variable que se envia de un swf se suma a la que esta en el otro swf.

Información adicional

Ejemplo del tutorial
Archivos del tutorial
Si tienes alguna pregunta de este tutorial; puedes hacerla aqui en los foros

Tutoriales relacionados