| Paquete | flash.system |
| Clase | public final class ApplicationDomain |
| Herencia | ApplicationDomain Object |
| Versión del lenguaje: | ActionScript 3.0 |
| Versión del reproductor: | Flash Player 9 |
Los dominios de aplicación se utilizan al cargar un archivo SWF externo mediante la clase Loader. Todas las definiciones de ActionScript 3.0 del archivo SWF cargado se guardan en el dominio de aplicación, que está especificado por la propiedad applicationDomain del objeto LoaderContext transmitido como parámetro context de los métodos load() o loadBytes() del objeto Loader. El objeto LoaderInfo también contiene una propiedad applicationDomain de sólo lectura.
Todo el código de un archivo SWF se define para que exista en un dominio de aplicación. El dominio de aplicación actual es el lugar en el que se ejecuta la aplicación principal. El dominio del sistema contiene todos los dominios de la aplicación, incluido el dominio actual, lo que significa que contiene todas las clases de Flash Player.
Cada dominio de aplicación tiene asociado un dominio principal, excepto el dominio del sistema. El dominio principal del dominio de aplicación principal es el dominio del sistema. Sólo es necesario definir las clases cargadas si su clase principal no las ha definido todavía. No es posible anular una definición de clase cargada con otra definición más reciente.
Para ver ejemplos de uso de dominios de aplicación, consulte Programación con ActionScript 3.0.
La función constructora ApplicationDomain() permite crear un objeto ApplicationDomain.
Véase también
| Propiedad | Definido por | ||
|---|---|---|---|
![]() | constructor : Object
Una referencia a la clase de objeto o función constructora para una instancia de objeto determinada.
| Object | |
| currentDomain : ApplicationDomain
[static] [read-only]
Obtiene el dominio de aplicación actual en el que se ejecuta el código.
| ApplicationDomain | ||
| parentDomain : ApplicationDomain
[read-only]
Obtiene el dominio principal de este dominio de aplicación.
| ApplicationDomain | ||
![]() | prototype : Object
[static]
Una referencia al objeto prototipo de una clase u objeto de función.
| Object | |
| Método | Definido por | ||
|---|---|---|---|
|
ApplicationDomain(parentDomain:ApplicationDomain = null)
Crea un nuevo dominio de aplicación.
| ApplicationDomain | ||
|
Obtiene una definición pública del dominio de aplicación especificado.
| ApplicationDomain | ||
|
Comprueba si existe una definición pública en el dominio de aplicación especificado.
| ApplicationDomain | ||
![]() |
Indica si un objeto tiene definida una propiedad especificada.
| Object | |
![]() |
Indica si hay una instancia de la clase Object en la cadena de prototipo del objeto especificado como parámetro.
| Object | |
![]() |
Indica si existe la propiedad especificada y si es enumerable.
| Object | |
![]() |
Establece la disponibilidad de una propiedad dinámica para operaciones de bucle.
| Object | |
![]() |
Devuelve la representación de cadena del objeto especificado.
| Object | |
![]() |
Devuelve el valor simple del objeto especificado.
| Object | |
| currentDomain | propiedad |
currentDomain:ApplicationDomain [read-only]
| Versión del lenguaje: | ActionScript 3.0 |
| Versión del reproductor: | Flash Player 9 |
Obtiene el dominio de aplicación actual en el que se ejecuta el código.
public static function get currentDomain():ApplicationDomain
Véase también
| parentDomain | propiedad |
parentDomain:ApplicationDomain [read-only]
| Versión del lenguaje: | ActionScript 3.0 |
| Versión del reproductor: | Flash Player 9 |
Obtiene el dominio principal de este dominio de aplicación.
public function get parentDomain():ApplicationDomain
Véase también
| ApplicationDomain | () | constructor |
public function ApplicationDomain(parentDomain:ApplicationDomain = null)
| Versión del lenguaje: | ActionScript 3.0 |
| Versión del reproductor: | Flash Player 9 |
Crea un nuevo dominio de aplicación.
ParámetrosparentDomain:ApplicationDomain (default = null) — Si no se transmite ningún dominio principal, este dominio de aplicación considera el dominio del sistema como elemento principal.
|
| getDefinition | () | método |
public function getDefinition(name:String):Object
| Versión del lenguaje: | ActionScript 3.0 |
| Versión del reproductor: | Flash Player 9 |
Obtiene una definición pública del dominio de aplicación especificado. La definición puede ser de una clase, de un espacio de nombres o de una función.
Parámetros
name:String — Nombre de la definición.
|
Object — Objeto asociado a la definición.
|
ReferenceError — No existe ninguna definición pública con el nombre especificado.
|
| hasDefinition | () | método |
public function hasDefinition(name:String):Boolean
| Versión del lenguaje: | ActionScript 3.0 |
| Versión del reproductor: | Flash Player 9 |
Comprueba si existe una definición pública en el dominio de aplicación especificado. La definición puede ser de una clase, de un espacio de nombres o de una función.
Parámetros
name:String — Nombre de la definición.
|
Boolean — Devuelve un valor true si existe la definición especificada; en caso contrario, devuelve false.
|
Notas:
Comience creando el archivo RuntimeClasses.swf a partir del siguiente código:
package {
import flash.display.Sprite;
public class RuntimeClasses extends Sprite
{
public function RuntimeClasses()
{
}
public function greet():String {
return("Hello World");
}
}
}
A continuación, implemente el siguiente 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. En este caso, se crea un nuevo ApplicationDomain, de modo que las propiedades y métodos de la clase Greeter de cualquier archivo SWF que se cargue en segundo lugar no reemplacen las de la primera clase Greeter. Para comprobar esto, modifique la propiedad context.applicationDomain en el método load deClassLoader.
Notas:
Cree un archivo Greeter.as en el directorio "en" con el siguiente código:
package {
import flash.display.Sprite;
public class Greeter extends Sprite
{
public function Greeter()
{
}
public function greet():String {
return("Good Morning");
}
}
}
Después, cree un archivo Greeter.as muy similar en el directorio "es":
package {
import flash.display.Sprite;
public class Greeter extends Sprite
{
public function Greeter()
{
}
public function greet():String {
return("Buenos Dias");
}
}
}
Compile archivos SWF para ambos y, a continuación, implemente el siguiente 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));
}
}
Enviarme un mensaje de correo electrónico cuando se añadan comentarios a esta página | Informe de comentarios
Página actual: http://livedocs.adobe.com/flash/9.0_es/ActionScriptLangRefV3/flash/system/ApplicationDomain.html