| Pacote | flash.system |
| Classe | public final class ApplicationDomain |
| Herança | ApplicationDomain Object |
| Versão da linguagem: | ActionScript 3.0 |
| Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Domínios de aplicativos são usados quando um arquivo SWF externo é carregado por meio da classe Loader. Todas as definições do ActionScript 3.0 no arquivo SWF carregado são armazenadas no domínio de aplicativo, que é especificado pela propriedade applicationDomain do objeto LoaderContext que você transmite como um parâmetro context do método load() ou loadBytes() do objeto Loader. O objeto LoaderInfo também contém uma propriedade applicationDomain, que é somente leitura.
Todo código em um arquivo SWF é definido para estar presente em um domínio de aplicativo. O domínio de aplicativo atual é onde seu aplicativo principal é executado. O domínio de sistema contém todos os domínios de aplicativo, incluindo o domínio atual, o que significa que ele contém todas as classes do Flash Player.
Cada domínio de aplicativo, exceto o domínio de sistema, tem um domínio-pai associado. O domínio-pai do domínio de aplicativo do seu aplicativo principal é o domínio de sistema. As classes carregadas só são definidas quando o pai ainda não as definiu. Você não pode substituir uma definição de classe loaded por uma definição mais recente.
Para exemplos de uso de domínios de aplicativo, consulte o Guia do Desenvolvedor do ActionScript 3.0.
A função de construtor ApplicationDomain() permite criar um objeto ApplicationDomain.
Mais exemplos
Elementos da API relacionados
flash.display.Loader.loadBytes()
flash.display.LoaderInfo
flash.net.URLRequest
flash.system.LoaderContext
| Propriedade | Definido por | ||
|---|---|---|---|
![]() | constructor : Object
Uma referência ao objeto de classe ou à função de construtor de uma determinada ocorrência de objeto. | Object | |
| currentDomain : ApplicationDomain [estático] [somente leitura]
Obtém o domínio de aplicativo atual no qual seu código está em execução. | ApplicationDomain | ||
| domainMemory : ByteArray
Obtém e define o objeto no qual as operações de memória global no domínio funcionarão nesse ApplicationDomain. | ApplicationDomain | ||
| MIN_DOMAIN_MEMORY_LENGTH : uint [estático] [somente leitura]
Obtém o tamanho mínimo necessário do objeto na memória para ser usado como ApplicationDomain.domainMemory. | ApplicationDomain | ||
| parentDomain : ApplicationDomain [somente leitura]
Obtém o domínio-pai desse domínio de aplicativo. | ApplicationDomain | ||
| Método | Definido por | ||
|---|---|---|---|
ApplicationDomain(parentDomain:ApplicationDomain = null)
Cria um novo domínio de aplicativo. | ApplicationDomain | ||
Obtém uma definição pública do domínio de aplicativo especificado. | ApplicationDomain | ||
Obtém todos os nomes totalmente qualificados de definições públicas do domínio do aplicativo especificado. | ApplicationDomain | ||
Verifica se existe uma definição pública no domínio de aplicativo especificado. | ApplicationDomain | ||
![]() |
Indica se um objeto tem uma propriedade especificada definida. | Object | |
![]() |
Indica se uma ocorrência da classe Object está na cadeia de protótipos do objeto especificado como o parâmetro. | Object | |
![]() |
Indica se a propriedade especificada existe e é enumerável. | Object | |
![]() |
Define a disponibilidade de uma propriedade dinâmica para operações de repetição. | Object | |
![]() |
Retorna a representação da string deste objeto, formatado segundo as convenções específicas para a localidade. | Object | |
![]() |
Retorna a representação de string do objeto especificado. | Object | |
![]() |
Retorna o valor primitivo do objeto especificado. | Object | |
currentDomain | propriedade |
currentDomain:ApplicationDomain [somente leitura] | Versão da linguagem: | ActionScript 3.0 |
| Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Obtém o domínio de aplicativo atual no qual seu código está em execução.
Implementação
public static function get currentDomain():ApplicationDomaindomainMemory | propriedade |
domainMemory:ByteArray| Versão da linguagem: | ActionScript 3.0 |
| Versões de runtime: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Obtém e define o objeto no qual as operações de memória global no domínio funcionarão nesse ApplicationDomain.
Implementação
public function get domainMemory():ByteArray public function set domainMemory(value:ByteArray):voidMIN_DOMAIN_MEMORY_LENGTH | propriedade |
MIN_DOMAIN_MEMORY_LENGTH:uint [somente leitura] | Versão da linguagem: | ActionScript 3.0 |
| Versões de runtime: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Obtém o tamanho mínimo necessário do objeto na memória para ser usado como ApplicationDomain.domainMemory.
Implementação
public static function get MIN_DOMAIN_MEMORY_LENGTH():uintparentDomain | propriedade |
parentDomain:ApplicationDomain [somente leitura] | Versão da linguagem: | ActionScript 3.0 |
| Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Obtém o domínio-pai desse domínio de aplicativo.
Implementação
public function get parentDomain():ApplicationDomainApplicationDomain | () | Construtor |
public function ApplicationDomain(parentDomain:ApplicationDomain = null)| Versão da linguagem: | ActionScript 3.0 |
| Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Cria um novo domínio de aplicativo.
ParâmetrosparentDomain:ApplicationDomain (default = null) — Se nenhum domínio-pai for transmitido, o domínio de aplicativo considera o domínio de sistema como pai.
|
getDefinition | () | método |
public function getDefinition(name:String):Object| Versão da linguagem: | ActionScript 3.0 |
| Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Obtém uma definição pública do domínio de aplicativo especificado. A definição pode ser a de uma classe, de um namespace ou de uma função.
Parâmetros
name:String — O nome da definição.
|
Object — O objeto associado à definição.
|
Lança
ReferenceError — Não existe definição pública com o nome especificado.
|
getQualifiedDefinitionNames | () | método |
public function getQualifiedDefinitionNames():Vector.<String>| Versão da linguagem: | ActionScript 3.0 |
| Versões de runtime: | Flash Player 11.3, AIR 3.3 |
Obtém todos os nomes totalmente qualificados de definições públicas do domínio do aplicativo especificado. A definição pode ser a de uma classe, de um namespace ou de uma função. Os nomes retornados deste método podem ser transmitidos ao método getDefinition () para obter o objeto da definição propriamente dito.
O Vetor retornado é do tipo String, onde cada String está no formulário: package.path::definitionName
Se definitionName está no pacote de nível superior, então package.path:: é omitido.
Por exemplo, na seguinte definição de classe:
package my.Example
{
public class SampleClass extends Sprite
{ }
}
Esse método retorna "my.Example::SampleClass".
RetornaVector.<String> — Um Vetor não classificado de Strings que são os nomes das definições. Se não há nenhuma definição, há um Vetor vazio.<String> é retornada.
|
Lança
SecurityError — A definição pertence a um domínio ao qual o código de chamada não tem acesso.
|
hasDefinition | () | método |
public function hasDefinition(name:String):Boolean| Versão da linguagem: | ActionScript 3.0 |
| Versões de runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Verifica se existe uma definição pública no domínio de aplicativo especificado. A definição pode ser a de uma classe, de um namespace ou de uma função.
Parâmetros
name:String — O nome da definição.
|
Boolean — Um valor de true se a definição especificada existir; do contrário, false.
|
Observações:
- Como a classe ClassLoader carrega um arquivo SWF, a segurança local precisa estar no nível de sistema de arquivos.
- Para executar este exemplo você deve ter um arquivo swf chamado RuntimeClasses.swf existente na mesma pasta do arquivo ApplicationDomainExample.swf.
Comece criando o arquivo RuntimeClasses no seguinte código:
package {
import flash.display.Sprite;
public class RuntimeClasses extends Sprite
{
public function RuntimeClasses()
{}
public function greet():String {
return("Hello World");
}
}
}
Em seguida, implemente o seguinte código:
package {
import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.errors.IllegalOperationError;
import flash.events.Event;
import flash.text.TextField;
public class ApplicationDomainExample extends Sprite {
private var loader:ClassLoader;
private var tf:TextField = new TextField();
public function ApplicationDomainExample() {
addChild(tf);
loader = new ClassLoader();
loader.addEventListener(ClassLoader.LOAD_ERROR,loadErrorHandler);
loader.addEventListener(ClassLoader.CLASS_LOADED,classLoadedHandler);
loader.load("RuntimeClasses.swf");
}
private function loadErrorHandler(e:Event):void {
tf.text = "Load failed";
throw new IllegalOperationError("Cannot load the specified file.");
}
private function classLoadedHandler(e:Event):void {
var runtimeClassRef:Class = loader.getClass("RuntimeClasses");
var greeter:Object = new runtimeClassRef();
tf.text = greeter.greet();
}
}
}
import flash.display.Loader;
import flash.errors.IllegalOperationError;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.IOErrorEvent;
import flash.events.SecurityErrorEvent;
import flash.net.URLRequest;
import flash.system.ApplicationDomain;
import flash.system.LoaderContext;
class ClassLoader extends EventDispatcher {
public static var CLASS_LOADED:String = "classLoaded";
public static var LOAD_ERROR:String = "loadError";
private var loader:Loader;
private var swfLib:String;
private var request:URLRequest;
private var loadedClass:Class;
public function ClassLoader() {
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR,securityErrorHandler);
}
public function load(lib:String):void {
swfLib = lib;
request = new URLRequest(swfLib);
var context:LoaderContext = new LoaderContext();
context.applicationDomain=ApplicationDomain.currentDomain;
loader.load(request,context);
}
public function getClass(className:String):Class {
try {
return loader.contentLoaderInfo.applicationDomain.getDefinition(className) as Class;
} catch (e:Error) {
throw new IllegalOperationError(className + " definition not found in " + swfLib);
}
return null;
}
private function completeHandler(e:Event):void {
dispatchEvent(new Event(ClassLoader.CLASS_LOADED));
}
private function ioErrorHandler(e:Event):void {
dispatchEvent(new Event(ClassLoader.LOAD_ERROR));
}
private function securityErrorHandler(e:Event):void {
dispatchEvent(new Event(ClassLoader.LOAD_ERROR));
}
}
ApplicationDomain.currentDomain. Nesse caso, um novo ApplicationDomain é criado, para que então as propriedades e os métodos da classe Greeter do que quer que o SWF carregue em segundo não substituam as propriedades e os métodos da primeira classe Greeter. Isso pode ser testado modificando a propriedade context.applicationDomain no método load deClassLoader.
Observações:
- Como a classe ClassLoader carrega um arquivo SWF, a segurança local precisa estar no nível de sistema de arquivos.
- Para executar este exemplo, você deve ter dois arquivos SWF chamados Greeter.swf existentes nas pastas "en" e "es", respectivamente.
Crie um arquivo Greeter.as no diretório "en" com o seguinte código:
package {
import flash.display.Sprite;
public class Greeter extends Sprite
{
public function Greeter()
{
}
public function greet():String {
return("Good Morning");
}
}
}
Em seguida, crie um arquivo Greeter.as muito semelhante, no diretório "es":
package {
import flash.display.Sprite;
public class Greeter extends Sprite
{
public function Greeter()
{
}
public function greet():String {
return("Buenos Dias");
}
}
}
Compile arquivos SWF para ambos e, em seguida, implemente o seguinte código:
package {
import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.errors.IllegalOperationError;
import flash.events.Event;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
public class ApplicationDomainExample2 extends Sprite {
private var spanishGreeterLoader:ClassLoader;
private var englishGreeterLoader:ClassLoader;
private var tf:TextField = new TextField();
private var greetersLoaded:uint = 0;
public function ApplicationDomainExample2() {
tf.autoSize = TextFieldAutoSize.LEFT;
addChild(tf);
spanishGreeterLoader = new ClassLoader();
spanishGreeterLoader.addEventListener(ClassLoader.LOAD_ERROR,loadErrorHandler);
spanishGreeterLoader.addEventListener(ClassLoader.CLASS_LOADED,classLoadedHandler);
spanishGreeterLoader.load("es/Greeter.swf");
englishGreeterLoader = new ClassLoader();
englishGreeterLoader.addEventListener(ClassLoader.LOAD_ERROR,loadErrorHandler);
englishGreeterLoader.addEventListener(ClassLoader.CLASS_LOADED,classLoadedHandler);
englishGreeterLoader.load("en/Greeter.swf");
}
private function loadErrorHandler(e:Event):void {
tf.text = "Load failed";
throw new IllegalOperationError("Cannot load the specified file.");
}
private function classLoadedHandler(e:Event):void {
greetersLoaded++;
if(greetersLoaded == 2) {
greet();
}
}
private function greet():void {
var spanishGreeter:Class = spanishGreeterLoader.getClass("Greeter");
var englishGreeter:Class = englishGreeterLoader.getClass("Greeter");
var greeter1 = new spanishGreeter();
var greeter2 = new englishGreeter();
tf.text = greeter1.greet() + "\n" + greeter2.greet();
}
}
}
import flash.display.Loader;
import flash.errors.IllegalOperationError;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.IOErrorEvent;
import flash.events.SecurityErrorEvent;
import flash.net.URLRequest;
import flash.system.ApplicationDomain;
import flash.system.LoaderContext;
class ClassLoader extends EventDispatcher {
public static var CLASS_LOADED:String = "classLoaded";
public static var LOAD_ERROR:String = "loadError";
private var loader:Loader;
private var swfLib:String;
private var request:URLRequest;
private var loadedClass:Class;
public function ClassLoader() {
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHandler);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR,securityErrorHandler);
}
public function load(lib:String):void {
swfLib = lib;
request = new URLRequest(swfLib);
var context:LoaderContext = new LoaderContext();
// context.applicationDomain = ApplicationDomain.currentDomain;
context.applicationDomain = new ApplicationDomain();
loader.load(request,context);
}
public function getClass(className:String):Class {
try {
return loader.contentLoaderInfo.applicationDomain.getDefinition(className) as Class;
} catch (e:Error) {
throw new IllegalOperationError(className + " definition not found in " + swfLib);
}
return null;
}
private function completeHandler(e:Event):void {
dispatchEvent(new Event(ClassLoader.CLASS_LOADED));
}
private function ioErrorHandler(e:Event):void {
dispatchEvent(new Event(ClassLoader.LOAD_ERROR));
}
private function securityErrorHandler(e:Event):void {
dispatchEvent(new Event(ClassLoader.LOAD_ERROR));
}
}
Wed Jun 13 2018, 11:10 AM Z
Ocultar propriedades públicas herdadas
Mostrar propriedades públicas herdadas