| Paket | flash.system |
| Klasse | public final class ApplicationDomain |
| Vererbung | ApplicationDomain Object |
| Sprachversion : | ActionScript 3.0 |
| Player-Version : | Flash Player 9 |
Anwendungsdomänen werden beim Laden einer externen SWF-Datei über die Loader-Klasse verwendet. Alle ActionScript 3.0-Definitionen in der geladenen SWF-Datei sind in der Anwendungsdomäne gespeichert, die durch die applicationDomain-Eigenschaft des LoaderContext-Objekts angegeben wird, das als context-Parameter der load()- oder loadBytes()-Methode des Loader-Objekts übergeben wird. Das LoaderInfo-Objekt enthält auch eine schreibgeschützte applicationDomain-Eigenschaft.
Der gesamte Code in einer SWF-Datei ist so definiert, dass er sich in einer Anwendungsdomäne befindet. Die aktuelle Anwendungsdomäne ist die Domäne, in der die Hauptanwendung ausgeführt wird. Die Systemdomäne enthält alle Anwendungsdomänen, einschließlich der aktuellen Domäne, d. h. alle Klassen von Flash Player.
Mit Ausnahme der Systemdomäne ist jede Anwendungsdomäne mit einer übergeordneten Domäne verknüpft. Die Systemdomäne ist die übergeordnete Domäne der Anwendungsdomäne der Hauptanwendung. Geladene Klassen werden nur definiert, wenn sie in der jeweils übergeordneten Klasse nicht bereits definiert sind. Die Definition einer geladenen Klasse kann nicht mit einer neueren Definition überschrieben werden.
Beispiele zur Verwendung von Anwendungsdomänen finden Sie im Handbuch Programmieren mit ActionScript 3.0.
Über die ApplicationDomain()-Konstruktorfunktion können Sie ein ApplicationDomain-Objekt erstellen.
Siehe auch
| Eigenschaft | Definiert von | ||
|---|---|---|---|
![]() | constructor : Object
Ein Verweis auf das Klassenobjekt oder die Konstruktorfunktion für eine angegebene Objektinstanz.
| Object | |
| currentDomain : ApplicationDomain
[static] [read-only]
Ruft die aktuelle Anwendungsdomäne ab, in der der Code ausgeführt wird.
| ApplicationDomain | ||
| parentDomain : ApplicationDomain
[read-only]
Ruft die übergeordnete Domäne der Anwendungsdomäne ab.
| ApplicationDomain | ||
![]() | prototype : Object
[static]
Ein Verweis auf das Prototypobjekt einer Klasse oder eines Funktionsobjekts.
| Object | |
| Methode | Definiert von | ||
|---|---|---|---|
|
ApplicationDomain(parentDomain:ApplicationDomain = null)
Erstellt eine neue Anwendungsdomäne.
| ApplicationDomain | ||
|
Ruft eine öffentliche Definition von der angegebenen Anwendungsdomäne ab.
| ApplicationDomain | ||
|
Überprüft, ob in der angegebenen Anwendungsdomäne eine öffentliche Definition vorhanden ist.
| ApplicationDomain | ||
![]() |
Gibt an, ob für ein Objekt eine bestimmte Eigenschaft definiert wurde.
| Object | |
![]() |
Gibt an, ob eine Instanz der Object-Klasse in der Prototypkette des Objekts vorhanden ist, das als Parameter angegeben wurde.
| Object | |
![]() |
Gibt an, ob die angegebene Eigenschaft vorhanden ist und durchlaufen werden kann.
| Object | |
![]() |
Legt die Verfügbarkeit einer dynamischen Eigenschaft für Schleifenoperationen fest.
| Object | |
![]() |
Gibt das angegebene Objekt als String zurück.
| Object | |
![]() |
Gibt den Grundwert des angegebenen Objekts zurück.
| Object | |
| currentDomain | Eigenschaft |
currentDomain:ApplicationDomain [read-only]
| Sprachversion : | ActionScript 3.0 |
| Player-Version : | Flash Player 9 |
Ruft die aktuelle Anwendungsdomäne ab, in der der Code ausgeführt wird.
public static function get currentDomain():ApplicationDomain
Siehe auch
| parentDomain | Eigenschaft |
parentDomain:ApplicationDomain [read-only]
| Sprachversion : | ActionScript 3.0 |
| Player-Version : | Flash Player 9 |
Ruft die übergeordnete Domäne der Anwendungsdomäne ab.
public function get parentDomain():ApplicationDomain
Siehe auch
| ApplicationDomain | () | Konstruktor |
public function ApplicationDomain(parentDomain:ApplicationDomain = null)
| Sprachversion : | ActionScript 3.0 |
| Player-Version : | Flash Player 9 |
Erstellt eine neue Anwendungsdomäne.
ParameterparentDomain:ApplicationDomain (default = null) — Wenn keine übergeordnete Domäne übergeben wird, wird dieser Anwendungsdomäne die Systemdomäne als übergeordnete Domäne zugeordnet.
|
| getDefinition | () | Methode |
public function getDefinition(name:String):Object
| Sprachversion : | ActionScript 3.0 |
| Player-Version : | Flash Player 9 |
Ruft eine öffentliche Definition von der angegebenen Anwendungsdomäne ab. Dabei kann es sich um die Definition einer Klasse, eines Namespace oder einer Funktion handeln.
Parameter
name:String — Der Name der Definition.
|
Object — Das mit der Definition verknüpfte Objekt.
|
ReferenceError — Es ist keine öffentliche Definition mit dem angegebenen Namen vorhanden.
|
| hasDefinition | () | Methode |
public function hasDefinition(name:String):Boolean
| Sprachversion : | ActionScript 3.0 |
| Player-Version : | Flash Player 9 |
Überprüft, ob in der angegebenen Anwendungsdomäne eine öffentliche Definition vorhanden ist. Dabei kann es sich um die Definition einer Klasse, eines Namespace oder einer Funktion handeln.
Parameter
name:String — Der Name der Definition.
|
Boolean — Der Wert true, wenn die angegebene Definition vorhanden ist, andernfalls false.
|
Hinweise:
Erstellen Sie zunächst die Datei "RuntimeClasses.swf" mithilfe des folgenden Codes:
package {
import flash.display.Sprite;
public class RuntimeClasses extends Sprite
{
public function RuntimeClasses()
{
}
public function greet():String {
return("Hello World");
}
}
}
Implementieren Sie dann den folgenden Code:
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 zu verwenden. In diesem Fall wurde eine neue ApplicationDomain erstellt, sodass die Eigenschaften und Methoden der Greeter-Klasse der SWF-Datei, die als zweite geladen wird, nicht die Eigenschaften und Methoden der ersten Greeter-Klasse ersetzen. Sie können dies testen, indem Sie die context.applicationDomain-Eigenschaft in der load-Methode von ClassLoader ändern.
Hinweise:
Erstellen Sie im Ordner "en" eine Datei mit dem Namen "Greeter.as" mit dem folgenden Code:
package {
import flash.display.Sprite;
public class Greeter extends Sprite
{
public function Greeter()
{
}
public function greet():String {
return("Good Morning");
}
}
}
Erstellen Sie dann eine sehr ähnliche "Greeter.as"-Datei im Ordner "es":
package {
import flash.display.Sprite;
public class Greeter extends Sprite
{
public function Greeter()
{
}
public function greet():String {
return("Buenos Dias");
}
}
}
Kompilieren Sie SWF-Dateien für beide und implementieren Sie dann den folgenden Code:
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));
}
}
Eine E-Mail an mich senden, wenn dieser Seite Kommentare hinzugefügt werden | Kommentarbericht
Aktuelle Seite: http://livedocs.adobe.com/flash/9.0_de/ActionScriptLangRefV3/flash/system/ApplicationDomain.html