Trabalhar com domínios de aplicativoFlash Player 9 e posterior, Adobe AIR 1.0 e posterior O objetivo da classe ApplicationDomain é armazenar uma tabela de definições do ActionScript 3.0. Todo código em um arquivo SWF é definido para estar presente em um domínio de aplicativo. Domínios de aplicativo são usados para particionar classes que estão no mesmo domínio de segurança. Eles permitem que haja várias definições da mesma classe e permitem que filhos reutilizem definições de pai. É possível usar domínios de aplicativo carregando um arquivo SWF externo escrito no ActionScript 3.0 usando a API da classe Loader. (Observe que não é possível usar domínios de aplicativo ao carregar uma imagem ou arquivo SWF no ActionScript 1.0 ou no ActionScript 2.0.) Todas as definições do ActionScript 3.0 contidas na classe carregada são armazenadas no domínio do aplicativo. Ao carregar o arquivo SWF, é possível especificar que o arquivo seja incluído no mesmo domínio do aplicativo que o objeto Loader, definindo o parâmetro applicationDomain do objeto LoaderContext como ApplicationDomain.currentDomain. Colocando o arquivo SWF carregado no mesmo domínio de aplicativo, é possível acessar suas classes diretamente. Isso poderá ser útil se estiver carregando um arquivo SWF contendo mídia incorporada que permita acesso por meio de nomes de classes associadas ou se você desejar acessar os métodos do arquivo SWF carregado. O exemplo a seguir parte da premissa de que ele tem acesso para separar o arquivo Greeter.swf que define um método público denominado welcome(): package
{
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.*;
import flash.net.URLRequest;
import flash.system.ApplicationDomain;
import flash.system.LoaderContext;
public class ApplicationDomainExample extends Sprite
{
private var ldr:Loader;
public function ApplicationDomainExample()
{
ldr = new Loader();
var req:URLRequest = new URLRequest("Greeter.swf");
var ldrContext:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
ldr.load(req, ldrContext);
}
private function completeHandler(event:Event):void
{
var myGreeter:Class = ApplicationDomain.currentDomain.getDefinition("Greeter") as Class;
var myGreeter:Greeter = Greeter(event.target.content);
var message:String = myGreeter.welcome("Tommy");
trace(message); // Hello, Tommy
}
}
}
Consulte também Exemplo de classe ApplicationDomain da Referência do ActionScript 3.0 para a plataforma Adobe Flash. Outras coisas que devem ser lembradas ao trabalhar com domínios de aplicativos incluem:
O diagrama a seguir mostra um aplicativo que carrega conteúdo de vários arquivos SWF dentro de um único domínio, domain1.com. Dependendo do conteúdo carregado, diferentes domínios de aplicativos podem ser usados. O texto a seguir descreve a lógica usada para definir o domínio apropriado do aplicativo para cada arquivo SWF no aplicativo. O arquivo do aplicativo principal é application1.swf. Ele contém objetos Loader que carregam conteúdo de outros arquivos SWF. Neste cenário, o domínio atual é o Domínio do aplicativo 1. Uso A, uso B e uso C ilustram diferentes técnicas para configurar o domínio do aplicativo apropriado para cada arquivo SWF em um aplicativo.
|
|