A classe LocalConnection permite desenvolver arquivos SWF que podem enviar instruções a outros arquivos SWF sem o uso do método fscommand() ou do JavaScript. Objetos LocalConnection podem se comunicar apenas entre arquivos SWF que estão em execução no mesmo computador cliente, mas podem ser executados em diferentes aplicativos. Por exemplo, um arquivo SWF em execução em um navegador e um arquivo SWF em execução em um projetor podem compartilhar informações, com o projetor mantendo informações locais e o arquivo SWF com base em navegador conectado remotamente. (Um projetor é um arquivo SWF salvo em um formato que pode ser executado como um aplicativo autônomo, isto é, o projetor não requer que o Flash Player seja instalado porque está incorporado dentro do executável.)
Objetos LocalConnection podem ser usados para comunicação entre SWFs usando diferentes versões do ActionScript:
-
Objetos LocalConnection do ActionScript 3.0 podem se comunicar com objetos LocalConnection criados no ActionScript 1.0 ou 2.0.
-
Objetos LocalConnection do ActionScript 1.0 ou 2.0 podem se comunicar com objetos LocalConnection criados no ActionScript 3.0.
O Flash Player manipula automaticamente essa comunicação entre objetos LocalConnection de diferentes versões.
O modo mais simples de usar um objeto LocalConnection é permitir a comunicação somente entre objetos LocalConnection localizados no mesmo domínio ou no mesmo aplicativo do AIR. Desse modo, não é necessário se preocupar com problemas de segurança. No entanto, se precisar permitir a comunicação entre domínios, há vários modos de implementar medidas de segurança. Para obter mais informações, consulte a discussão do parâmetro
connectionName
do método
send()
e das entradas
allowDomain()
e
domain
http://help.adobe.com/pt_BR/Flash/CS5/AS3LR/flash/net/LocalConnection.html
na listagem da classe LocalConnection, na
Referência do ActionScript® 3.0 para Adobe® Flash® Platform
.
É possível usar objetos LocalConnection para enviar e receber dados dentro de um arquivo SWF único, mas a Adobe não recomenda esse procedimento. Em vez disso, use objetos compartilhados.
Há três maneiras de adicionar métodos de retorno de chamada aos objetos LocalConnection:
-
Criar subclasse da classe LocalConnection e adicionar métodos.
-
Definir a propriedade
LocalConnection.client
como um objeto que implementa os métodos.
-
Criar uma classe dinâmica que estende o LocalConnection e anexar métodos dinamicamente.
A primeira maneira de adicionar métodos de retorno de chamada é estender a classe LocalConnection. Você define os métodos dentro da classe personalizada em vez de adicioná-los dinamicamente à ocorrência de LocalConnection. Essa abordagem é demonstrada no código a seguir:
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);
}
}
}
É possível utilizar o código a seguir para criar uma nova instância da classe CustomLocalConnection:
var serverLC:CustomLocalConnection;
serverLC = new CustomLocalConnection("serverName");
A segunda maneira de adicionar métodos de retorno de chamada é usar a propriedade
LocalConnection.client
. Isso envolve a criação de uma classe personalizada e a atribuição de uma nova ocorrência para a propriedade
cliente
, conforme mostrado no código a seguir:
var lc:LocalConnection = new LocalConnection();
lc.client = new CustomClient();
A propriedade
LocalConnection.client
indica os métodos de retorno de chamada do objeto que devem ser chamados. No código anterior, a propriedade
client
foi definida como uma nova ocorrência de uma classe personalizada, CustomClient. O valor padrão da propriedade
client
é a ocorrência LocalConnection atual. Você poderá usar a propriedade
client
, se tiver dois manipuladores de dados que tenham o mesmo conjunto de métodos, mas funcionam de modo diferente, por exemplo, em um aplicativo em que um botão em uma janela alterna a exibição em uma segunda janela.
Para criar a classe CustomClient, você pode usar o seguinte código:
package
{
public class CustomClient extends Object
{
public function onMethod(timeString:String):void
{
trace("onMethod called at: " + timeString);
}
}
}
A terceira maneira de adicionar métodos de retorno de chamada criando uma classe dinâmica e anexando os métodos dinamicamente, é muito semelhante ao uso da classe LocalConnection em versões anteriores do ActionScript, conforme mostrado no código a seguir:
import flash.net.LocalConnection;
dynamic class DynamicLocalConnection extends LocalConnection {}
Os métodos de retorno de chamada podem ser adicionados dinamicamente a essa classe usando o seguinte 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);
}
A maneira anterior de adicionar métodos de retorno de chamada não é recomendada porque o código não é muito portátil. Além disso, o uso desse método de criação de conexões locais pode criar problemas de desempenho, porque o acesso a propriedades dinâmicas é drasticamente mais lento do que o acesso a propriedades seladas.
Propriedade isPerUser
A propriedade
isPerUser
foi adicionada ao Flash Player (10.0.32) e AIR (1.5.2) para solucionar um conflito que ocorre quando mais de um usuário está conectado em um computador Mac. Em outros sistemas, a propriedade é ignorada, já que a conexão local sempre foi estendida aos usuários. A propriedade
isPerUser
deve ser definida para
true
no código novo. No entanto, o valor padrão é
false
para manter a compatibilidade com versões anteriores. O padrão pode ser mudado em versões futuras dos tempos de execução.