La clase LocalConnection permite desarrollar archivos SWF capaces de enviar instrucciones a otros archivos SWF sin utilizar el método fscommand() ni JavaScript. Los objetos LocalConnection solo pueden comunicarse con archivos SWF que se ejecuten en el mismo equipo cliente, aunque pueden ejecutarse en aplicaciones distintas. Por ejemplo, un archivo SWF que se ejecuta en un navegador y un archivo SWF que se ejecuta en un proyector pueden compartir información, y el proyector conserva la información local y el archivo basado en el navegador se conecta de forma remota. (Un proyector es un archivo SWF guardado en un formato que puede ejecutarse como una aplicación autónoma, es decir, que el proyector no requiere que se instale Flash Player porque está incorporado en el ejecutable.)
Los objetos LocalConnection se pueden utilizar para comunicarse entre archivos SWF con distintas versiones de ActionScript:
-
Los objetos LocalConnection de ActionScript 3.0 pueden comunicarse con objetos LocalConnection creados con ActionScript 1.0 o 2.0.
-
Los objetos LocalConnection de ActionScript 1.0 o 2.0 pueden comunicarse con objetos LocalConnection creados con ActionScript 3.0.
Flash Player controla automáticamente esta comunicación entre objetos LocalConnection de distintas versiones.
La manera más simple de utilizar un objeto LocalConnection es permitir la comunicación solo entre objetos LocalConnection ubicados en el mismo dominio o en la misma aplicación de AIR. De este modo no es necesario preocuparse por la seguridad. Sin embargo, si debe permitir la comunicación entre dominios, tiene varias maneras de implementar medidas de seguridad. Para obtener información, consulte la descripción del parámetro
connectionName
del método
send()
y las entradas
allowDomain()
y
domain
en el listado de clases
LocalConnection
en
Referencia de ActionScript 3.0 para la plataforma de Adobe Flash
.
Es posible utilizar objetos LocalConnection para enviar y recibir datos en un solo archivo SWF, pero Adobe no recomienda esta práctica. Utilice objetos compartidos.
Hay tres formas de añadir métodos callback a los objetos LocalConnection:
-
Crear una subclase de la clase LocalConnection y añadir métodos.
-
Establecer la propiedad
LocalConnection.client
en un objeto que implemente los métodos.
-
Crear una clase dinámica que amplíe LocalConnection y asociar métodos de forma dinámica.
La primera forma de añadir métodos callback consiste en ampliar la clase LocalConnection. Los métodos se definen en la clase personalizada en lugar de añadirlos de forma dinámica a la instancia de LocalConnection. Este enfoque se muestra en el siguiente código:
package
{
import flash.net.LocalConnection;
public class CustomLocalConnection extends LocalConnection
{
public function CustomLocalConnection(connectionName:String)
{
try
{
connect(connectionName);
}
catch (error:ArgumentError)
{
// server already created/connected
}
}
public function onMethod(timeString:String):void
{
trace("onMethod called at: " + timeString);
}
}
}
Para crear una nueva instancia de la clase CustomLocalConnection, se puede usar el siguiente código:
var serverLC:CustomLocalConnection;
serverLC = new CustomLocalConnection("serverName");
La segunda forma de añadir métodos callback consiste en utilizar la propiedad
LocalConnection.client
. Esto implica crear una clase personalizada y asignar una nueva instancia a la propiedad
client
, como se muestra en el siguiente código:
var lc:LocalConnection = new LocalConnection();
lc.client = new CustomClient();
La propiedad
LocalConnection.client
indica los métodos callback del objeto que deben llamarse. En el código anterior, la propiedad
client
se estableció en una nueva instancia de una clase personalizada, CustomClient. El valor predeterminado de la propiedad
client
es la instancia de LocalConnection actual. Se puede utilizar la propiedad
client
si se tienen dos controladores de datos con el mismo conjunto de métodos pero distintos comportamientos; por ejemplo, en una aplicación donde un botón de una ventana activa o desactiva la visualización en una segunda ventana.
Para crear la clase CustomClient, se podría usar el siguiente código:
package
{
public class CustomClient extends Object
{
public function onMethod(timeString:String):void
{
trace("onMethod called at: " + timeString);
}
}
}
La tercera forma de añadir métodos callback, que consiste en crear una clase dinámica y asociar los métodos de forma dinámica, es muy similar a la utilización de la clase LocalConnection en versiones anteriores de ActionScript, como se muestra en el siguiente código:
import flash.net.LocalConnection;
dynamic class DynamicLocalConnection extends LocalConnection {}
Los métodos callback pueden añadirse de forma dinámica a esta clase con el siguiente código:
var connection:DynamicLocalConnection = new DynamicLocalConnection();
connection.onMethod = this.onMethod;
// Add your code here.
public function onMethod(timeString:String):void
{
trace("onMethod called at: " + timeString);
}
No se recomienda la anterior forma de añadir métodos callback porque el código tiene una escasa portabilidad. Además, si se utiliza este método de creación de conexiones locales, podrían surgir problemas de rendimiento debido a que el acceso a las propiedades dinámicas es considerablemente más lento que el acceso a las propiedades cerradas.
Propiedad isPerUser
La propiedad
isPerUser
se añadió a Flash Player (10.0.32) y a AIR (1.5.2) para resolver un conflicto que se producía cuando más de un usuario se conectaba a un ordenador Mac. En otros sistemas operativos, esta propiedad se omite porque la conexión local siempre está destinada a usuarios individuales. La propiedad
isPerUser
debe establecerse como
true
en código nuevo. Sin embargo, el valor predeterminado es actualmente
false
para permitir compatibilidad con versiones anteriores. El valor predeterminado puede cambiar en versiones futuras del motor de ejecución.