flash.systemImageDecodingPolicy Die ImageDecodingPolicy-Klasse definiert Werte für die imageDecodingPolicy-Eigenschaft der LoaderContext-Klasse.Die ImageDecodingPolicy-Klasse definiert Werte für die imageDecodingPolicy-Eigenschaft der LoaderContext-Klasse. Object Die ImageDecodingPolicy-Klasse definiert Werte für die imageDecodingPolicy-Eigenschaft der LoaderContext-Klasse. LoaderContext.imageDecodingPolicyON_DEMAND Gibt an, dass das Bild, das geladen wird, erst dann dekodiert wird, wenn es gebraucht wird.onDemandString Gibt an, dass das Bild, das geladen wird, erst dann dekodiert wird, wenn es gebraucht wird. ON_LOAD Gibt an, dass das Bild dekodiert wird, wenn es geladen wurde, bevor das complete-Ereignis gesendet wird.onLoadString Gibt an, dass das Bild dekodiert wird, wenn es geladen wurde, bevor das complete-Ereignis gesendet wird. SystemUpdaterType Die SystemUpdaterType-Klasse stellt Konstanten für ein Systemupdate bereit.Object Die SystemUpdaterType-Klasse stellt Konstanten für ein Systemupdate bereit. Diese Konstanten werden in der SystemUpdater.update()-Funktion verwendet.

Hinweis: Die SystemUpdater-API wird auf Desktopplattformen unterstützt.

DRM Aktualisiert das DRM-Modul.drmString Aktualisiert das DRM-Modul. SYSTEM Aktualisiert die Player-Laufzeitumgebung.systemString Aktualisiert die Player-Laufzeitumgebung.
IMEConversionMode Diese Klasse enthält Konstanten zur Verwendung mit der IME.conversionMode-Eigenschaft.Object Diese Klasse enthält Konstanten zur Verwendung mit der IME.conversionMode-Eigenschaft. Durch Setzen von conversionMode auf ALPHANUMERIC_FULL oder JAPANESE_KATAKANA_FULL wird im Player eine Schrift mit voller Breite verwendet, bei Verwendung von ALPHANUMERIC_HALF oder JAPANESE_KATAKANA_HALF dagegen eine Schrift mit halber Breite. flash.system.IME.conversionModeALPHANUMERIC_FULL Der String „ALPHANUMERIC_FULL“ zur Verwendung mit der IME.conversionMode-Eigenschaft.ALPHANUMERIC_FULLString Der String "ALPHANUMERIC_FULL" zur Verwendung mit der IME.conversionMode-Eigenschaft. Diese Konstante wird mit allen IMEs verwendet. Verwenden Sie die Syntax IMEConversionMode.ALPHANUMERIC_FULL. flash.system.IME.conversionModeALPHANUMERIC_HALF Der String „ALPHANUMERIC_HALF“ zur Verwendung mit der IME.conversionMode-Eigenschaft.ALPHANUMERIC_HALFString Der String "ALPHANUMERIC_HALF" zur Verwendung mit der IME.conversionMode-Eigenschaft. Diese Konstante wird mit allen IMEs verwendet. Verwenden Sie die Syntax IMEConversionMode.ALPHANUMERIC_HALF. flash.system.IME.conversionModeCHINESE Der String „CHINESE“ zur Verwendung mit der IME.conversionMode-Eigenschaft.CHINESEString Der String "CHINESE" zur Verwendung mit der IME.conversionMode-Eigenschaft. Diese Konstante wird mit IMEs für vereinfachtes und traditionelles Chinesisch verwendet. Verwenden Sie die Syntax IMEConversionMode.CHINESE. flash.system.IME.conversionModeJAPANESE_HIRAGANA Der String „JAPANESE_HIRAGANA“ zur Verwendung mit der IME.conversionMode-Eigenschaft.JAPANESE_HIRAGANAString Der String "JAPANESE_HIRAGANA" zur Verwendung mit der IME.conversionMode-Eigenschaft. Diese Konstante wird mit IMEs für Japanisch verwendet. Verwenden Sie die Syntax IMEConversionMode.JAPANESE_HIRAGANA. flash.system.IME.conversionModeJAPANESE_KATAKANA_FULL Der String „JAPANESE_KATAKANA_FULL“ zur Verwendung mit der IME.conversionMode-Eigenschaft.JAPANESE_KATAKANA_FULLString Der String "JAPANESE_KATAKANA_FULL" zur Verwendung mit der IME.conversionMode-Eigenschaft. Diese Konstante wird mit IMEs für Japanisch verwendet. Verwenden Sie die Syntax IMEConversionMode.JAPANESE_KATAKANA_FULL. flash.system.IME.conversionModeJAPANESE_KATAKANA_HALF Der String „JAPANESE_KATAKANA_HALF“ zur Verwendung mit der IME.conversionMode-Eigenschaft.JAPANESE_KATAKANA_HALFString Der String "JAPANESE_KATAKANA_HALF" zur Verwendung mit der IME.conversionMode-Eigenschaft. Diese Konstante wird mit IMEs für Japanisch verwendet. Verwenden Sie die Syntax IMEConversionMode.JAPANESE_KATAKANA_HALF. flash.system.IME.conversionModeKOREAN Der String „KOREAN“ zur Verwendung mit der IME.conversionMode-Eigenschaft.KOREANString Der String "KOREAN" zur Verwendung mit der IME.conversionMode-Eigenschaft. Diese Konstante wird mit IMEs für Koreanisch verwendet. Verwenden Sie die Syntax IMEConversionMode.KOREAN. flash.system.IME.conversionModeUNKNOWN Der String „UNKNOWN“, der durch Aufrufen der IME.conversionMode-Eigenschaft zurückgegeben werden kann.UNKNOWNString Der String "UNKNOWN", der durch Aufrufen der IME.conversionMode-Eigenschaft zurückgegeben werden kann. Dieser Wert kann nicht gesetzt werden und wird nur zurückgegeben, wenn der Player den derzeit aktiven IME nicht erkennt. Verwenden Sie die Syntax IMEConversionMode.UNKNOWN. flash.system.IME.conversionModeSecurityPanel Die SecurityPanel-Klasse enthält Werte zur Angabe des anzuzeigenden Bedienfelds für die Sicherheitseinstellungen.Object Die SecurityPanel-Klasse enthält Werte zur Angabe des anzuzeigenden Bedienfelds für die Sicherheitseinstellungen.

Diese Klasse enthält statische Konstanten, die mit der Security.showSettings()-Methode verwendet werden. Sie können keine neuen Instanzen der SecurityPanel-Klasse erstellen.

Das folgende Beispiel demonstriert, wie Sie mit einem click-Ereignis eines Sprite-Objekts das Bedienfeld für die Einstellungen des lokalen Speichers in den Flash Player-Einstellungen anzeigen können. Der Bühne wird mithilfe von draw() ein orangefarbenes Feld hinzugefügt. Zu draw() wird ein click-Ereignis-Listener mit dem Namen clickHandler() hinzugefügt, der auf click-Ereignisse reagiert, indem Flash Player veranlasst wird, das Bedienfeld für die Einstellungen des lokalen Speichers zu öffnen. package { import flash.display.Sprite; import flash.text.TextField; import flash.events.*; import flash.system.Security; import flash.system.SecurityPanel; public class SecurityExample extends Sprite { private var bgColor:uint = 0xFFCC00; private var size:uint = 100; public function SecurityExample() { draw(); } private function draw():void { var child:Sprite = new Sprite(); child.graphics.beginFill(bgColor); child.graphics.drawRect(0, 0, size, size); child.graphics.endFill(); child.buttonMode = true; var label:TextField = new TextField(); label.text = "settings"; label.selectable = false; label.mouseEnabled = false; child.addChild(label); child.addEventListener(MouseEvent.CLICK, clickHandler); addChild(child); } private function clickHandler(event:MouseEvent):void { Security.showSettings(SecurityPanel.LOCAL_STORAGE); } } }
CAMERA Wenn diese Konstante für Security.showSettings() übergeben wird, wird in den Flash Player-Einstellungen das Bedienfeld für die Kamera angezeigt.cameraString Wenn diese Konstante für Security.showSettings() übergeben wird, wird in den Flash Player-Einstellungen das Bedienfeld für die Kamera angezeigt. Security.showSettings()DEFAULT Wenn diese Konstante für Security.showSettings() übergeben wird, wird das zuletzt geöffnete Bedienfeld angezeigt, bei dem der Benutzer Flash Player-Einstellungen geschlossen hat.defaultString Wenn diese Konstante für Security.showSettings() übergeben wird, wird das zuletzt geöffnete Bedienfeld angezeigt, bei dem der Benutzer die Flash Player-Einstellungen geschlossen hat. Security.showSettings()DISPLAY Wenn diese Konstante für Security.showSettings() übergeben wird, wird in den Flash Player-Einstellungen das Bedienfeld „Anzeige“ angezeigt.displayString Wenn diese Konstante für Security.showSettings() übergeben wird, wird in den Flash Player-Einstellungen das Bedienfeld „Anzeige“ angezeigt. Security.showSettings()LOCAL_STORAGE Wenn diese Konstante für Security.showSettings() übergeben wird, wird das Bedienfeld für die Einstellungen des lokalen Speichers in den Flash Player-Einstellungen angezeigt.localStorageString Wenn diese Konstante für Security.showSettings() übergeben wird, wird das Bedienfeld für die Einstellungen des lokalen Speichers in den Flash Player-Einstellungen angezeigt. Security.showSettings()MICROPHONE Wenn diese Konstante für Security.showSettings() übergeben wird, wird in den Flash Player-Einstellungen das Bedienfeld für das Mikrofon angezeigt.microphoneString Wenn diese Konstante für Security.showSettings() übergeben wird, wird in den Flash Player-Einstellungen das Bedienfeld für das Mikrofon angezeigt. Security.showSettings()PRIVACY Wenn diese Konstante für Security.showSettings() übergeben wird, wird das Bedienfeld für die Zugriffsschutzeinstellungen in den Flash Player-Einstellungen angezeigt.privacyString Wenn diese Konstante für Security.showSettings() übergeben wird, wird das Bedienfeld für die Zugriffsschutzeinstellungen in den Flash Player-Einstellungen angezeigt. Security.showSettings()SETTINGS_MANAGER Wenn diese Konstante für Security.showSettings() übergeben wird, wird der Einstellungsmanager (in einem separaten Browserfenster) angezeigt.settingsManagerString Wenn diese Konstante für Security.showSettings() übergeben wird, wird der Einstellungsmanager (in einem separaten Browserfenster) angezeigt. Security.showSettings()
TouchscreenType Die TouchscreenType-Klasse ist eine Aufzählungsklasse, die Werte für die verschiedenen Arten von berührungsempfindlichen Bildschirmen bietet.Object Die TouchscreenType-Klasse ist eine Aufzählungsklasse, die Werte für die verschiedenen Arten von berührungsempfindlichen Bildschirmen bietet.

Verwenden Sie die Werte, die von der TouchscreenType-Klasse definiert werden, mit der Capabilities.touchscreenType-Eigenschaft.

Das folgende Beispiel ist ein einfacher Test, der den aktuellen Status der Feststelltaste und der Taste „NUM“ sowie den Tastaturtyp und den Touchscreentyp der laufenden Umgebung anzeigt. Klicken Sie beim Testen dieses Beispiels auf das Textfeld, um die Eigenschaftswerte zu sehen: import flash.events.~~; import flash.display.~~; import flash.ui.Keyboard; import flash.system.Capabilities; import flash.text.TextField; var keyboardInfoTxt:TextField = new TextField(); keyboardInfoTxt.x = 30; keyboardInfoTxt.y = 50; keyboardInfoTxt.width = 300; keyboardInfoTxt.height = 100; keyboardInfoTxt.border = true; addChild(keyboardInfoTxt); addEventListener (MouseEvent.CLICK, getScreenKeyboardType); function getScreenKeyboardType(e:MouseEvent):void{ keyboardInfoTxt.text= "Caps Lock is : " + String(flash.ui.Keyboard.capsLock)+ "\n" + "Num Lock is : " + String(flash.ui.Keyboard.numLock) +"\n" + "Has Virtual Keyboard : " + String(flash.ui.Keyboard.hasVirtualKeyboard) + "\n" + "Physical Keyboard Type : " + flash.ui.Keyboard.physicalKeyboardType + "\n" + "flash.system.Capabilities.touchscreenType is : " + flash.system.Capabilities.touchscreenType; }
Capabilities.touchscreenTypeflash.ui.Mouse.supportsCursorFINGER Ein Touchscreen, der auf Fingerberührungen reagiert.fingerString Ein Touchscreen, der auf Fingerberührungen reagiert. NONE Der Computer oder das Gerät hat keinen unterstützten Touchscreen.noneString Der Computer oder das Gerät hat keinen unterstützten Touchscreen. STYLUS Ein Touchscreen, der mit einem Touchpen verwendet wird.stylusString Ein Touchscreen, der mit einem Touchpen verwendet wird.
ApplicationDomain Die ApplicationDomain-Klasse ist ein Container für diskrete Gruppen mit Klassendefinitionen.Object Die ApplicationDomain-Klasse ist ein Container für diskrete Gruppen mit Klassendefinitionen. Mit Anwendungsdomänen werden Klassen unterteilt, die sich in der gleichen Sicherheitsdomäne befinden. Dies ermöglicht mehrere Definitionen der gleichen Klasse und die Wiederverwendung übergeordneter Definitionen in Unterklassen.

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 jeweiligen Superklasse nicht bereits definiert sind. Die Definition einer geladenen Klasse kann nicht mit einer neueren Definition überschrieben werden.

Verwendungsbeispiele für Anwendungsdomänen finden Sie im ActionScript 3.0 Entwicklerhandbuch.

Über die ApplicationDomain()-Konstruktorfunktion können Sie ein ApplicationDomain-Objekt erstellen.

Das folgende Beispiel veranschaulicht, wie Klassen zur Laufzeit geladen und öffentliche Methoden, die sich in einer anderen SWF-Datei befinden, aufgerufen werden.

Hinweise:

  • Da eine SWF-Datei von der ClassLoader-Klasse geladen wird, muss die lokale Sicherheit die Dateisystemebene erfassen.
  • Um dieses Beispiel auszuführen, müssen Sie über eine swf-Datei mit dem Namen „RuntimeClasses.swf“ verfügen, die sich im gleichen Ordner befindet wie „ApplicationDomainExample.swf“.

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)); } }
Wenn mehrere SWF-Dateien kompilierte Klassen mit demselben Namen enthalten, die jedoch unterschiedliche Implementierungen bieten, können Sie die Klassen der extern geladenen SWF-Dateien anhand des folgenden Beispiels getrennt von anderen Klassen speichern. Bisher wurde die untergeordnete SWF-Datei angewiesen, 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:

  • Da eine SWF-Datei von der ClassLoader-Klasse geladen wird, muss die lokale Sicherheit die Dateisystemebene erfassen.
  • Um dieses Beispiel auszuführen, müssen Sie über zwei SWF-Dateien mit dem Namen „Greeter.swf“ verfügen, die im Ordner „en“ bzw. „es“ gespeichert sind.

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)); } }
flash.display.Loader.load()flash.display.Loader.loadBytes()flash.display.LoaderInfoflash.net.URLRequestflash.system.LoaderContextApplicationDomain Erstellt eine neue Anwendungsdomäne.parentDomainflash.system:ApplicationDomainnullWenn keine übergeordnete Domäne übergeben wird, wird dieser Anwendungsdomäne die Systemdomäne als übergeordnete Domäne zugeordnet. Erstellt eine neue Anwendungsdomäne. getDefinition Ruft eine öffentliche Definition von der angegebenen Anwendungsdomäne ab.Es ist keine öffentliche Definition mit dem angegebenen Namen vorhanden. ReferenceErrorReferenceErrorDas mit der Definition verknüpfte Objekt. ObjectnameStringDer Name der Definition. 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. hasDefinition Überprüft, ob in der angegebenen Anwendungsdomäne eine öffentliche Definition vorhanden ist.Der Wert true, wenn die angegebene Definition vorhanden ist, andernfalls false. BooleannameStringDer Name der Definition. Ü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. MIN_DOMAIN_MEMORY_LENGTH Ruft die erforderliche Mindestlänge des Speicherobjekts ab, das als ApplicationDomain.domainMemory verwendet wird.uint Ruft die erforderliche Mindestlänge des Speicherobjekts ab, das als ApplicationDomain.domainMemory verwendet wird. currentDomain Ruft die aktuelle Anwendungsdomäne ab, in der der Code ausgeführt wird.flash.system:ApplicationDomain Ruft die aktuelle Anwendungsdomäne ab, in der der Code ausgeführt wird. domainMemory Ruft das Objekt ab und stellt es ein, für welches Cross-Domain-Speichervorgänge innerhalb dieser ApplicationDomain stattfinden.flash.utils:ByteArray Ruft das Objekt ab und stellt es ein, für welches Cross-Domain-Speichervorgänge innerhalb dieser ApplicationDomain stattfinden. parentDomain Ruft die übergeordnete Domäne der Anwendungsdomäne ab.flash.system:ApplicationDomain Ruft die übergeordnete Domäne der Anwendungsdomäne ab.
Security Mit der Security-Klasse können Sie angeben, wie Inhalte in unterschiedlichen Domänen miteinander kommunizieren können.Object Mit der Security-Klasse können Sie angeben, wie Inhalte in unterschiedlichen Domänen miteinander kommunizieren können. Das folgende Beispiel demonstriert, wie Sie mit einem click-Ereignis eines Sprite-Objekts das Bedienfeld für die Einstellungen des lokalen Speichers in den Flash Player-Einstellungen anzeigen können. Der Bühne wird mithilfe von draw() ein orangefarbenes Feld hinzugefügt. Zu draw() wird ein click-Ereignis-Listener mit dem Namen clickHandler() hinzugefügt, der auf click-Ereignisse reagiert, indem Flash Player veranlasst wird, das Bedienfeld für die Einstellungen des lokalen Speichers zu öffnen. package { import flash.display.Sprite; import flash.text.TextField; import flash.events.*; import flash.system.Security; import flash.system.SecurityPanel; public class SecurityExample extends Sprite { private var bgColor:uint = 0xFFCC00; private var size:uint = 100; public function SecurityExample() { draw(); } private function draw():void { var child:Sprite = new Sprite(); child.graphics.beginFill(bgColor); child.graphics.drawRect(0, 0, size, size); child.graphics.endFill(); child.buttonMode = true; var label:TextField = new TextField(); label.text = "settings"; label.selectable = false; label.mouseEnabled = false; child.addChild(label); child.addEventListener(MouseEvent.CLICK, clickHandler); addChild(child); } private function clickHandler(event:MouseEvent):void { Security.showSettings(SecurityPanel.LOCAL_STORAGE); } } } allowDomain Lässt SWF-Dateien in den identifizierten Domänen auf Objekte und Variablen in der SWF-Datei zugreifen, die den allowDomain()-Aufruf enthalten.Wenn diese Methode von Code in der Sicherheitssandbox der AIR-Anwendung aufgerufen wird, wird ein SecurityError-Ausnahmefehler zurückgegeben. Inhalt außerhalb der Sicherheitssandbox der Anwendung kann kein Cross-Scripting für Inhalte in der Sicherheitssandbox der Anwendung ausführen. SecurityErrorSecurityErrordomainsEin oder mehrere Strings bzw. URLRequest-Objekte zur Bezeichnung der Domänen, über die Sie den Zugriff gewähren möchten. Sie können die Sonderdomäne „~~“ angeben, um den Zugriff über alle Domänen zu ermöglichen.

In Flash Professional kann nur durch Angabe von „~~“ der Zugriff auf nicht lokale SWF-Dateien über lokale SWF-Dateien ermöglicht werden, die unter Verwendung von „Nur auf Netzwerk zugreifen“ für die Option „Sicherheit bei lokaler Wiedergabe“ im Flash-Authoringtool veröffentlicht wurden.

Hinweis: Der Platzhalterwert funktioniert nicht für Subdomänen. Sie können zum Beispiel nicht ~~.foo.com für den domains-Parameter verwenden. Sie können zwar eine Subdomäne mit einem Platzhalterwert für eine domänenübergreifende Richtliniendatei angeben (wie in ~~.foo.com), es ist jedoch nicht möglich, einen Platzhalterwert auf diese Weise für die allowDomain()-Methode zu verwenden.

Hiermit können SWF-Dateien und HTML-Dateien auf Objekte und Variablen in der aufrufenden SWF-Datei zugreifen.
Lässt SWF-Dateien in den identifizierten Domänen auf Objekte und Variablen in der SWF-Datei zugreifen, die den allowDomain()-Aufruf enthalten.

Hinweis: Der Aufruf dieser Methode vom Code in der Sandbox der AIR-Anwendung verursacht eine SecurityError-Ausnahme. Inhalt außerhalb der Sicherheitsdomäne der Anwendung kann kein direktes Cross-Scripting für Inhalte in der Anwendungssandbox ausführen. Allerdings kann Inhalt außerhalb der Anwendungssandbox über eine Sandbox-Brücke mit Inhalt in der Sicherheitssandbox der Anwendung kommunizieren.

Wenn zwei SWF-Dateien von derselben Domäne aus bereitgestellt werden, z. B. von http://mysite.com/swfA.swf und http://mysite.com/swfB.swf, kann swfA.swf Variablen, Objekte, Eigenschaften, Methoden usw. in swfB.swf untersuchen und ändern, und swfB.swf kann dasselbe bei swfA.swf tun. Dies wird als Skripterstellung über mehrere Filme oder Cross-Scripting bezeichnet.

Wenn zwei SWF-Dateien über verschiedene Domänen bereitgestellt werden, beispielsweise http://siteA.com/swfA.swf und http://siteB.com/siteB.swf, kann swfA.swf in Flash Player keine Skripterstellung von swfB.swf durchführen und umgekehrt. Eine SWF-Datei erteilt SWF-Dateien von anderen Domänen Berechtigungen durch Aufrufen von Security.allowDomain(). Dies wird als Cross-Domain-Scripting bezeichnet. Durch Aufrufen von Security.allowDomain("siteA.com") erteilt siteB.swf der Datei siteA.swf die Berechtigung zur Skripterstellung.

In domänenübergreifenden Situationen ist es wichtig, die betreffenden beiden Seiten klar zu trennen. Im Folgenden wird die Seite, die das Cross-Scripting durchführt, als zugreifende Seite (in der Regel die zugreifende SWF-Datei) und die andere Seite als Seite, auf die zugegriffen wird (in der Regel die SWF-Datei, auf die zugegriffen wird), bezeichnet. Wenn siteA.swf die Skripterstellung von siteB.swf durchführt, handelt es sich bei siteA.swf um die zugreifende Seite und bei siteB.swf um die Seite, auf die zugegriffen wird.

Mit allowDomain() hergestellte Cross-Domain-Berechtigungen sind asymmetrisch. Im vorherigen Beispiel kann siteA.swf die Skripterstellung von siteB.swf durchführen, siteB.swf jedoch keine Skripterstellung von siteA.swf, da siteA.swf nicht allowDomain() aufgerufen hat, um SWF-Dateien auf siteB.com die Berechtigung zur Skripterstellung zu erteilen. Sie können jedoch symmetrische Berechtigungen einrichten, indem Sie allowDomain() aus beiden SWF-Dateien aufrufen.

Flash Player schützt SWF-Dateien nicht nur vor Cross-Domain-Scripting durch andere SWF-Dateien, sondern auch vor Cross-Domain-Scripting durch HTML-Dateien. HTML-für-SWF-Skripterstellung kann bei älteren Browserfunktionen wie z. B. SetVariable oder bei Callbacks über ExternalInterface.addCallback() auftreten. Bei domänenübergreifender HTML-für-SWF-Skripterstellung muss die SWF-Datei, auf die zugegriffen wird, allowDomain() genauso aufrufen, als ob es sich bei der zugreifenden Seite um eine SWF-Datei handelt, andernfalls schlägt der Vorgang fehl.

Die Angabe einer IP-Adresse als Argument für allowDomain() gestattet keinen Zugriff durch alle zugreifenden Seiten, die von der angegebenen IP-Adresse stammen. Stattdessen erhält hierdurch nur eine Seite Zugriff, die in der URL die angegebene IP-Adresse und nicht den Domänennamen enthält, der dieser IP-Adresse zugeordnet ist.

Versionsspezifische Unterschiede

Die domänenübergreifenden Sicherheitsregeln von Flash Player wurden von Version zu Version weiterentwickelt. Die Unterschiede sind in der folgenden Tabelle zusammengefasst.

Aktuellste am Cross-Scripting beteiligte SWF-VersionallowDomain() erforderlich?allowInsecureDomain() erforderlich?Welche SWF-Datei muss allowDomain() oder allowInsecureDomain() aufrufen?Was kann in allowDomain() bzw. allowInsecureDomain() angegeben werden?5 oder frühere VersionNeinNeinn. zutr.n. zutr.6Ja, wenn übergeordnete Domänen nicht übereinstimmen.NeinDie SWF-Datei, auf die zugegriffen wird, oder jede SWF-Datei mit der gleichen Superdomäne wie die SWF-Datei, auf die zugegriffen wird.
  • Textbasierte Domäne (mysite.com)
  • IP-Adresse (192.168.1.1)
7Ja, wenn Domänen nicht exakt übereinstimmen.Ja, wenn Zugriff von HTTP auf HTTPS stattfindet (auch wenn die Domänen exakt übereinstimmen)Die SWF-Datei, auf die zugegriffen wird, oder jede SWF-Datei mit der gleichen Domäne wie die SWF-Datei, auf die zugegriffen wird.
  • Textbasierte Domäne (mysite.com)
  • IP-Adresse (192.168.1.1)
8 oder spätere VersionJa, wenn Domänen nicht exakt übereinstimmen.Ja, wenn Zugriff von HTTP auf HTTPS stattfindet (auch wenn die Domänen exakt übereinstimmen)SWF-Datei, auf die zugegriffen wird
  • Textbasierte Domäne (mysite.com)
  • IP-Adresse (192.168.1.1)
  • Platzhalter (~~)

Die Versionen, die das Verhalten von Flash Player steuern, sind SWF-Versionen (Veröffentlichungsversionen einer SWF), nicht die Version von Flash Player selbst. Beispiel: Wenn Flash Player 8 eine SWF wiedergibt, die für Version 7 veröffentlicht wurde, wendet Flash Player das Verhalten von Version 7 an. Hierdurch wird sichergestellt, dass Upgrades des Players keinen Einfluss auf das Verhalten von Security.allowDomain() in bereitgestellten SWF-Dateien haben.

Die Spalte „Version“ in der vorherigen Tabelle gibt jeweils die neueste SWF-Version an, die an einem Cross-Scripting-Vorgang beteiligt ist. Flash Player bestimmt das Verhalten entweder aufgrund der Version der zugreifenden SWF-Datei oder der Version der SWF-Datei, auf die zugegriffen wird, je nachdem, welche der beiden Versionen neuer ist.

Die folgenden Absätze enthalten weitere Informationen zu den Sicherheitsänderungen in Flash Player mit Bezug auf Security.allowDomain().

Version 5. Beim Cross-Domain-Scripting liegen keine Beschränkungen vor.

Version 6. Einführung der Cross-Domain-Scripting-Sicherheit. Standardmäßig verbietet Flash Player das Cross-Domain-Scripting. Mit Security.allowDomain() kann es jedoch zugelassen werden. Um festzustellen, ob sich zwei Dateien in derselben Domäne befinden, verwendet Flash Player die Superdomäne der jeweiligen Datei. Diese entspricht exakt dem Hostnamen aus der URL der Datei, minus dem ersten Segment, bis zu einem Minimum von zwei Segmenten. Beispiel: Die Superdomäne www.mysite.com lautet einfach mysite.com. In diesem Fall könnten SWF-Dateien sowohl von www.mysite.com als auch von store.mysite.com Skripten füreinander erstellen, ohne Security.allowDomain() aufzurufen.

Version 7. Superdomänen-Übereinstimmung wird durch exakte Domänenübereinstimmung ersetzt. Zwei Dateien haben aufeinander nur dann Skriptzugriff, wenn die Hostnamen in ihren URLs identisch sind. Andernfalls ist ein Aufruf von Security.allowDomain() erforderlich. In der Standardeinstellung haben Dateien, die aus Nicht-HTTPS-URLs geladen werden, keinen Skriptzugriff mehr auf Dateien, die aus HTTPS-URLs geladen werden, auch wenn diese Dateien aus exakt derselben Domäne geladen werden. Diese Einschränkung trägt zum Schutz von HTTPS-Dateien bei, da eine Nicht-HTTPS-Datei beim Herunterladen geändert werden kann. Eine absichtlich geänderte Nicht-HTTPS-Datei kann eine HTTPS-Datei beschädigen, die ansonsten gegen Aktionen dieser Art geschützt wäre. Mit Security.allowInsecureDomain() können HTTPS-SWF-Dateien, auf die zugegriffen wird, diese Einschränkung bei Bedarf aufheben. Von der Verwendung von Security.allowInsecureDomain() wird jedoch abgeraten.

Version 8. Änderungen in zwei wichtigen Bereichen:

  • Durch Aufrufen von Security.allowDomain() sind Cross-Scripting-Vorgänge nun nur noch dann möglich, wenn die SWF-Datei, auf die zugegriffen wird, die Datei ist, die Security.allowDomain() aufgerufen hat. Mit anderen Worten: Eine SWF-Datei, die Security.allowDomain() aufruft, gibt nun nur den Zugriff auf sich selbst frei. In früheren Versionen ermöglichte der Aufruf von Security.allowDomain() Cross-Scripting-Vorgänge, bei denen die SWF-Datei, auf die zugegriffen wurde, jede SWF-Datei in der Domäne der SWF-Datei sein konnte, die Security.allowDomain() aufgerufen hat. Durch den Aufruf von Security.allowDomain() wurde bisher die gesamte Domäne der aufrufenden SWF-Datei freigegeben.
  • Für Security.allowDomain("~~") und Security.allowInsecureDomain("~~") werden nun Werte mit Platzhalterzeichen unterstützt. Der Platzhalter (~~) ermöglicht Cross-Scripting-Vorgänge, bei denen die zugreifende Datei jede beliebige Datei aus einer beliebigen Quelle sein kann. Der Platzhalter ist gewissermaßen eine globale Berechtigung. Berechtigungen durch Platzhalter sind zum Aktivieren bestimmter Vorgänge unter den Sicherheitsregeln für lokale Dateien erforderlich. Insbesondere bei einer lokalen SWF-Datei mit Berechtigung für den Netzwerkzugriff zum Erstellen von Skripten für eine SWF-Datei im Internet muss die Internet-SWF-Datei, auf die zugegriffen wird, die Security.allowDomain("~~")-Methode aufrufen, um der Tatsache Rechnung zu tragen, dass der Ursprung einer lokalen SWF-Datei unbekannt ist. (Wenn die Internet-SWF-Datei von einer HTTPS-URL geladen wird, muss die Internet-SWF-Datei stattdessen die Security.allowInsecureDomain("~~")-Methode aufrufen.)

Von Zeit zu Zeit stellt sich Ihnen folgende Situation: Sie laden eine untergeordnete SWF-Datei aus einer anderen Domäne und möchten dieser das Scripting für die übergeordnete SWF-Datei ermöglichen, Ihnen ist jedoch die endgültige Domäne der untergeordneten SWF-Datei nicht bekannt. Dies ist beispielsweise der Fall, wenn Sie Weiterleitungen mit Lastausgleich oder Server von Dritten verwenden.

Sie können dann die url-Eigenschaft des URLRequest-Objekts verwenden, das für Loader.load() übergeben wird. Wenn Sie beispielsweise eine untergeordnete SWF-Datei in einer übergeordneten SWF-Datei laden, können Sie auf die contentLoaderInfo-Eigenschaft des Loader-Objekts für die übergeordnete SWF-Datei zugreifen:

Security.allowDomain(loader.contentLoaderInfo.url)

Warten Sie, bis der Ladevorgang der untergeordneten SWF-Datei gestartet wird, um den korrekten Wert der url-Eigenschaft abrufen zu können. Über das progress-Ereignis können Sie bestimmen, wann der Ladevorgang der untergeordneten SWF-Datei gestartet wurde.

Es kann auch die entgegengesetzte Situation auftreten: Angenommen, Sie haben eine untergeordnete SWF-Datei erstellt, die das Scripting durch die übergeordnete SWF-Datei ermöglichen soll, der jedoch die Domäne der übergeordneten SWF-Datei nicht bekannt ist. In diesem Fall können Sie auf die loaderInfo-Eigenschaft des Anzeigeobjekts zugreifen, bei dem es sich um das Stammobjekt der SWF-Datei handelt. Rufen Sie Security.allowDomain(this.root.loaderInfo.loaderURL) in der untergeordneten SWF-Datei auf. Sie müssen nicht warten, bis die übergeordnete SWF-Datei geladen wurde, da der Ladevorgang der übergeordneten Datei bereits abgeschlossen ist, wenn der Ladevorgang für die untergeordnete SWF-Datei erfolgt.

Wenn Sie eine Datei für Flash Player 8 oder eine spätere Version veröffentlichen, können Sie in diesen Fällen auch Security.allowDomain("~~") aufrufen. Dies ist jedoch mitunter gefährlich, da hierdurch die aufrufende SWF-Datei für den Zugriff durch jede andere SWF-Datei der Domäne geöffnet wird. In der Regel ist es sicherer, die Eigenschaft _url zu verwenden.

Weitere Informationen zum Thema Sicherheit finden Sie im Flash Player Developer Center im Abschnitt Sicherheit.

ExternalInterface.addCallback()flash.events.Event.COMPLETEflash.display.DisplayObject.parentflash.net.URLRequest.urlallowInsecureDomain()
allowInsecureDomain Hiermit können SWF- und HTML-Dateien in den angegebenen Domänen auf Objekte und Variablen in der aufrufenden SWF-Datei zugreifen, die über das HTTPS-Protokoll gehostet wird.Der Aufruf dieser Methode vom Code in der Sicherheitssandbox der AIR-Anwendung verursacht eine SecurityError-Ausnahme. Inhalt außerhalb der Sicherheitssandbox der Anwendung kann kein Cross-Scripting für Inhalte in der Sicherheitssandbox der Anwendung ausführen. SecurityErrorSecurityErrordomainsEin oder mehrere Strings bzw. URLRequest-Objekte zur Bezeichnung der Domänen, über die Sie den Zugriff gewähren möchten. Sie können die Sonderdomäne „~~“ angeben, um den Zugriff über alle Domänen zu ermöglichen.

Nur durch Angabe von „~~“ kann der Zugriff auf nicht lokale SWF-Dateien über lokale SWF-Dateien ermöglicht werden, die unter Verwendung der Option „Nur auf Netzwerk zugreifen“ für die Einstellung „Sicherheit bei lokaler Wiedergabe“ („Datei“ > „Einstellungen für Veröffentlichungen“ > Registerkarte „Flash“) im Flash-Authoringtool veröffentlicht wurden.

Hinweis: Der Platzhalterwert funktioniert nicht für Subdomänen. Sie können zum Beispiel nicht ~~.foo.com für den domains-Parameter verwenden. Sie können zwar eine Subdomäne mit einem Platzhalterwert für eine domänenübergreifende Richtliniendatei angeben (wie in ~~.foo.com), es ist jedoch nicht möglich einen Platzhalterwert auf diese Weise für die allowInsecureDomain()-Methode zu verwenden.

Hiermit können SWF-Dateien und HTML-Dateien, die mit dem HTTPS-Protokoll gehostet werden, auf Objekte und Variablen in der aufrufenden SWF-Datei zugreifen.
Hiermit können SWF- und HTML-Dateien in den angegebenen Domänen auf Objekte und Variablen in der aufrufenden SWF-Datei zugreifen, die über das HTTPS-Protokoll gehostet wird.

Flash Player stellt allowInsecureDomain() zur Verfügung, um die Flexibilität zu maximieren, aber das Aufrufen dieser Methode wird nicht empfohlen. Beim Bereitstellen einer Datei über HTTPS sind einige Schutzvorkehrungen für Sie und die Benutzer aktiv. Durch Aufrufen von allowInsecureDomain wird eine dieser Schutzvorkehrungen geschwächt.

Hinweis: Der Aufruf dieser Methode vom Code in der Sandbox der AIR-Anwendung verursacht eine SecurityError-Ausnahme. Inhalt außerhalb der Sicherheitsdomäne der Anwendung kann kein direktes Cross-Scripting für Inhalte in der Anwendungssandbox ausführen. Allerdings kann Inhalt außerhalb der Anwendungssandbox über eine Sandbox-Brücke mit Inhalt in der Sicherheitssandbox der Anwendung kommunizieren.

Diese Methode funktioniert genauso wie Security.allowDomain(), erlaubt jedoch zusätzlich Operationen, bei denen die zugreifende Seite mit einem Nicht-HTTPS-Protokoll und die Seite, auf die zugegriffen wird, mit HTTPS geladen werden. In Flash Player ab Version 7 erhalten Nicht-HTTPS-Dateien keinen Skriptzugriff auf HTTPS-Dateien. Die allowInsecureDomain()-Methode hebt diese Einschränkung auf, wenn sie von der HTTPS-SWF verwendet wird, auf die zugegriffen wird.

Verwenden Sie die allowInsecureDomain()-Methode nur, um den Skriptzugriff durch Nicht-HTTPS-Dateien auf HTTPS-Dateien zu ermöglichen. Verwenden Sie diese Methode zum Ermöglichen der Skripterstellung, wenn die zugreifende Nicht-HTTPS-Datei und die HTTPS-Datei, auf die zugegriffen wird, von derselben Domäne aus bereitgestellt werden, beispielsweise, wenn eine SWF-Datei auf http://mysite.com Skripten für https://mysite.com erstellen soll. Verwenden Sie die Methode nicht, um eine Skripterstellung zwischen Nicht-HTTPS-Dateien, zwischen HTTPS-Dateien oder seitens HTTPS-Dateien bei Nicht-HTTPS-Dateien zu ermöglichen. Für diese Fälle sollten Sie die allowDomain()-Methode verwenden.

Das folgende Szenario verdeutlicht, wie allowInsecureDomain() bei unsachgemäßer Anwendung die Sicherheit gefährden kann.

Beachten Sie, dass das folgende Beispiel nur ein mögliches Szenario darstellt. Es soll lediglich die Problematik von allowInsecureDomain() anhand eines realistischen Beispiels für Cross-Scripting verdeutlichen. Es deckt jedoch nicht alle Probleme bezüglich der Sicherheitsarchitektur ab und sollte nur als Hintergrundinformation betrachtet werden. Im Flash Player Developer Center stehen umfangreiche Informationen zum Thema Flash Player und Sicherheit zur Verfügung. Weitere Informationen finden Sie im Flash Player Developer Center im Abschnitt Sicherheit.

Angenommen, Sie möchten eine E-Commerce-Site erstellen, die aus zwei Komponenten besteht: einem Katalog, der nicht sicher zu sein braucht, da er nur öffentliche Informationen enthält, und einer Einkaufswagen-/Bezahlkomponente, die sicher sein muss, um finanzspezifische und persönliche Daten der Benutzer zu schützen. Der Katalog soll von http://mysite.com/catalog.swf aus bereitgestellt werden, der Einkaufswagen von https://mysite.com/cart.swf. Eine Anforderung an die Site besteht darin, dass kein Dritter die Kreditkartennummern Ihrer Benutzer ausspionieren kann, indem er eine Schwachstelle in der Sicherheitsarchitektur nutzt.

Stellen Sie sich vor, dass sich ein Angreifer zwischen Ihren Server und Ihre Benutzer platziert, um zu versuchen, die Kreditkartennummern abzufangen, die die Benutzer in der Einkaufswagen-Anwendung eingeben. Ein solcher Angreifer kann beispielsweise ein skrupelloser Internet-Dienstanbieter (ISP) sein, der von einem Ihrer Benutzer verwendet wird, oder ein böswilliger Administrator am Arbeitsplatz des Benutzers – im Grunde jeder, der die Fähigkeit besitzt, Netzwerkpakete einzusehen oder zu ändern, die über das öffentliche Internet zwischen Ihren Benutzern und Ihren Servern übertragen werden. Diese Situation ist nicht ungewöhnlich.

Wenn cart.swf die Kreditkartendaten mittels HTTPS an Ihre Server überträgt, kann der Angreifer diese Informationen nicht direkt aus den Netzwerkpaketen stehlen, da es sich um eine verschlüsselte Übertragung handelt. Er kann jedoch eine andere Technik anwenden: den Inhalt einer Ihrer SWF-Dateien ändern, während diese dem Benutzer bereitgestellt wird, d. h. die SWF-Datei durch eine andere Version ersetzen, die die Benutzerdaten an einen anderen vom Angreifer betriebenen Server überträgt.

Das HTTPS-Protokoll verhindert u. a., dass eine solche Änderung durchgeführt wird, da HTTPS-Übertragungen nicht nur verschlüsselt, sondern auch manipulationssicher sind. Wenn ein Angreifer ein Paket ändert, erkennt die empfangende Seite diese Änderung und verwirft das Paket. In diesem Fall kann der Angreifer also die Datei cart.swf nicht ändern, da die Übertragung über HTTPS erfolgt.

Doch nun möchten Sie, dass in der über HTTP bereitgestellten Datei catalog.swf Artikel mittels Schaltflächen dem Einkaufswagen in cart.swf hinzugefügt werden können, der seinerseits über HTTPS bereitgestellt wird. Dazu ruft cart.swf die allowInsecureDomain()-Methode auf, über die der Katalog (catalog.swf) ein Skript für cart.swf erstellen kann. Diese Aktion hat eine nicht beabsichtigte Folge: Der Angreifer kann nun bereits Änderungen an der Datei catalog.swf vornehmen, während der Benutzer sie herunterlädt, da sie mittels HTTP übertragen wird und somit nicht manipulationssicher ist. Die geänderte catalog.swf des Angreifers kann nun ein Skript für cart.swf erstellen, da cart.swf einen Aufruf der Methode allowInsecureDomain() enthält. Die geänderte Datei catalog.swf kann mithilfe von ActionScript auf die Variablen in cart.swf zugreifen und somit die Kreditkartendaten und andere vertrauliche Informationen des Benutzers lesen. Die geänderte catalog.swf kann diese Daten dann an den Server des Angreifers senden.

Ein solcher Missbrauch ist natürlich nicht erwünscht, Sie möchten dennoch, dass Cross-Scripting zwischen den beiden SWF-Dateien Ihrer Site möglich ist. Im Folgenden sind zwei Möglichkeiten aufgeführt, wie Sie diese hypothetische E-Commerce-Site so umbauen können, dass allowInsecureDomain() verhindert wird:

  • Bereitstellen aller SWF-Dateien der Anwendung über HTTPS: Dies ist die bei weitem einfachste und zuverlässigste Lösung. Im genannten Beispiel würden Sie sowohl catalog.swf als auch cart.swf über HTTPS übertragen. Eventuell bemerken Sie ein etwas höheres Datenverkehrsaufkommen und eine etwas stärkere CPU-Auslastung des Servers, wenn Sie eine Datei wie catalog.swf von HTTP auf HTTPS umstellen, und für Ihre Benutzer kommt es eventuell zu etwas längeren Anwendungsladezeiten. Um die Auswirkung dieser Umstellung zu testen, sollten Sie mit reellen Servern experimentieren. Normalerweise liegt die Datenverkehrserhöhung in einem Bereich von 10 bis 20 Prozent. Manchmal ist auch gar keine Erhöhung feststellbar. In der Regel können Sie die Ergebnisse mithilfe von HTTPS-Beschleunigungshardware oder -software weiter optimieren. Ein entscheidender Vorteil der Bereitstellung aller kooperierenden SWF-Dateien über HTTPS besteht darin, dass Sie eine HTTPS-URL als Haupt-URL im Browser des Benutzers verwenden können, ohne dass der Browser Warnmeldungen bezüglich gemischtem Inhalt ausgibt. Darüber hinaus wird dem Benutzer das Schlosssymbol des Browsers als ihm bekanntes und vertrauenswürdiges Zeichen für Sicherheit angezeigt.
  • Verwenden des HTTPS-auf-HTTP-Skriptzugriffs anstelle des HTTP-auf-HTTPS-Skriptzugriffs: Im genannten Beispiel könnten Sie den Inhalt des Einkaufswagens eines Benutzers in catalog.swf speichern, während cart.swf nur für das Bezahlen zuständig ist. Beim Auschecken kann die Datei cart.swf den Inhalt des Einkaufwagens aus ActionScript-Variablen der Datei catalog.swf abrufen. Die Beschränkung auf HTTP-zu-HTTPS-Skripten ist asymmetrisch. Obwohl eine über HTTP-übermittelte catalog.swf-Datei nicht sicher für Skript-Operationen in einer über HTTPS übermittelten cart.swf-Datei freigegeben werden kann, kann die HTTPS-cart.swf-Datei Änderungen in der HTTP-catalog.swf-Datei vornehmen. Dieser Ansatz ist feiner als der reine HTTPS-Ansatz. Achten Sie jedoch darauf, nicht allen per HTTP übermittelten SWF-Dateien zu vertrauen, da diese manipuliert werden können. Wenn beispielsweise cart.swf die ActionScript-Variable abruft, die den Inhalt des Einkaufswagens beschreibt, kann der ActionScript-Code in cart.swf nicht darauf vertrauen, dass der Wert dieser Variable im erwarteten Format vorliegt. Sie müssen deshalb darauf achten, dass der Inhalt des Einkaufswagens keine ungültigen Daten enthält, die cart.swf zu einer unerwünschten Aktion veranlassen könnte. Sie müssen auch das Risiko einkalkulieren, dass ein Angreifer durch Ändern von catalog.swf zwar gültige, aber inkorrekte Daten an cart.swf übermitteln könnte. So könnte er z. B. Artikel in den Einkaufswagen des Benutzers schmuggeln. Beim üblichen Bezahlvorgang wird das Risiko dadurch ein wenig abgemildert, dass der Inhalt des Einkaufswagens und der Gesamtbetrag erneut zur abschließenden Bestätigung durch den Benutzer angezeigt wird, doch grundsätzlich bleibt das Risiko bestehen.

Die gängigen Webbrowser unterscheiden bereits seit Jahren zwischen HTTPS- und Nicht-HTTPS-Dateien. Das erläuterte Szenario verdeutlicht, weshalb diese Unterscheidung so wichtig ist. Flash Player bietet die Möglichkeit, diese Sicherheitsvorkehrung zu umgehen, wenn dies absolut erforderlich ist. Zuvor sollten Sie sich jedoch die möglichen Folgen sehr genau bewusst machen.

Weitere Informationen zum Thema Sicherheit finden Sie im Flash Player Developer Center im Abschnitt Sicherheit.

allowDomain()
loadPolicyFile Sucht an dem durch den url-Parameter angegebenen Ort nach einer Richtliniendatei.urlStringDie URL der Richtliniendatei, die geladen werden soll. Sucht an dem durch den url-Parameter angegebenen Ort nach einer Richtliniendatei. Sucht an dem durch den url-Parameter angegebenen Ort nach einer Richtliniendatei. In Adobe AIR und Flash Player wird mithilfe von Richtliniendateien bestimmt, ob über Anwendungen Daten von anderen Servern als dem eigenen geladen werden können. Bitte beachten Sie, dass der Methodenname zwar loadPolicyFile() ist, aber dass die Datei erst geladen wird, wenn vom Netzwerk eine Richtliniendatei angefordert wird.

Mithilfe von Security.loadPolicyFile() kann Flash Player oder AIR Richtliniendateien von beliebigen Orten laden, wie im folgenden Beispiel veranschaulicht wird:

Security.loadPolicyFile("http://www.example.com/sub/dir/pf.xml");

Hierdurch versucht Flash Player bzw. AIR, von der angegebenen URL eine Richtliniendatei abzurufen. Alle an diesem Speicherort von der Richtliniendatei zugelassenen Berechtigungen gelten auch für alle Inhalte auf der gleichen oder einer niedrigeren Ebene in der virtuellen Ordnerhierarchie des Servers.

Beispielsweise wird bei den folgenden zusätzlichen Codezeilen keine Ausnahme ausgelöst:

import flash.net.~~; var request:URLRequest = new URLRequest("http://www.example.com/sub/dir/vars.txt"); var loader:URLLoader = new URLLoader(); loader.load(request); var loader2:URLLoader = new URLLoader(); var request2:URLRequest = new URLRequest("http://www.example.com/sub/dir/deep/vars2.txt"); loader2.load(request2);

Beim folgenden Code wird jedoch eine Sicherheitsausnahme ausgelöst:

import flash.net.~~; var request3:URLRequest = new URLRequest("http://www.example.com/elsewhere/vars3.txt"); var loader3:URLLoader = new URLLoader(); loader3.load(request3);

Mit loadPolicyFile() können Sie beliebig viele Richtliniendateien laden. Beim Prüfen einer Anforderung, für die eine Richtliniendatei erforderlich ist, wartet Flash Player oder AIR immer, bis der Download der Richtliniendatei abgeschlossen ist, bevor eine Anforderung zurückgewiesen wird. Als letzter Weg, wenn mit loadPolicyFile() keine Richtliniendatei angegeben ist, die eine Anforderung zulässt, konsultiert Flash Player bzw. AIR die ursprünglichen Standardpfade.

Beim Überprüfen auf eine Master-Richtliniendatei wartet Flash Player drei Sekunden lang auf eine Antwort des Servers. Wenn keine Antwort erhalten wird, nimmt Flash Player an, dass es keine Master-Richtliniendatei gibt. Für Aufrufe der Methode loadPolicyFile() besteht hingegen kein standardmäßiges Zeitlimit. Flash Player geht davon aus, dass die aufgerufene Datei vorhanden ist, und wartet für einen beliebigen Zeitraum, um diese zu laden. Um sicherzustellen, dass die Master-Richtliniendatei geladen wird, sollten Sie diese daher mit der Methode loadPolicyFile() explizit aufrufen.

Eine Verbindung mit normalerweise reservierten Ports ist nicht möglich. Eine vollständige Liste der gesperrten Ports finden Sie unter „Beschränken von Netzwerk-APIs“ im ActionScript 3.0 Entwicklerhandbuch.

Wenn Sie das xmlsocket-Protokoll zusammen mit einer angegebenen Portnummer verwenden, können Sie Richtliniendatei direkt von einem XMLSocket-Server abrufen, wie im folgenden Beispiel gezeigt. Socket-Verbindungen unterliegen nicht der oben beschriebenen Beschränkung für reservierte Ports.

Security.loadPolicyFile("xmlsocket://foo.com:414");

Hierdurch versucht Flash Player bzw. AIR, eine Richtliniendatei von dem angegebenen Host und Port abzurufen. Wurde eine Verbindung mit dem angegebenen Port hergestellt, sendet Flash Player oder AIR <policy-file-request />, beendet mit einem null-Byte. Der Server muss zum Beenden einer Richtliniendatei ein Null-Byte senden und kann die Verbindung anschließend schließen. Tut er dies nicht, schließt Flash Player oder AIR die Verbindung nach Erhalt des beendenden null-Byte.

Sie können eine SWF-Datei daran hindern, diese Methode aufzurufen, indem Sie auf der HTML-Seite, die den SWF-Inhalt enthält, den Parameter allowNetworking der object- und embed-Tags festlegen.

Weitere Informationen zum Thema Sicherheit finden Sie im Flash Player Developer Center im Abschnitt Sicherheit.

showSettings Zeigt das Bedienfeld für die Sicherheitseinstellungen in Flash Player an.panelStringdefaultEin Wert der SecurityPanel-Klasse, der angibt, welches Bedienfeld für die Sicherheitseinstellungen angezeigt wird. Wenn Sie diesen Parameter weglassen, wird SecurityPanel.DEFAULT verwendet. Zeigt das Bedienfeld für die Sicherheitseinstellungen in Flash Player an. Diese Methode gilt nicht für Inhalt in Adobe AIR; der Aufruf in einer AIR-Anwendung hat keine Auswirkungen. SecurityPanelAPPLICATION Die Datei wird in einer AIR-Anwendung ausgeführt und sie wurde mit dem Paket (der AIR-Datei) für diese Anwendung installiert.applicationString Die Datei wird in einer AIR-Anwendung ausgeführt und sie wurde mit dem Paket (der AIR-Datei) für diese Anwendung installiert. Der Inhalt befindet sich im Ressourcenordner der AIR-Anwendung (in dem der Anwendungsinhalt installiert wird). sandboxTypeREMOTELOCAL_WITH_FILELOCAL_WITH_NETWORKLOCAL_TRUSTEDLOCAL_TRUSTED Die Datei ist eine lokale Datei, die vom Benutzer über den Flash Player-Einstellungsmanager oder eine FlashPlayerTrust-Konfigurationsdatei als vertrauenswürdig eingestuft wurde.localTrustedString Die Datei ist eine lokale Datei, die vom Benutzer über den Flash Player-Einstellungsmanager oder eine FlashPlayerTrust-Konfigurationsdatei als vertrauenswürdig eingestuft wurde. Die Datei kann lokale Datenquellen lesen und eine Verbindung mit dem Internet herstellen. sandboxTypeREMOTELOCAL_WITH_FILELOCAL_WITH_NETWORKAPPLICATIONLOCAL_WITH_FILE Die Datei ist eine lokale Datei, wurde vom Benutzer nicht als vertrauenswürdig einstuft, und es handelt sich nicht um eine SWF-Datei, die mit einem Netzwerkziel veröffentlicht wurde.localWithFileString Die Datei ist eine lokale Datei, wurde vom Benutzer nicht als vertrauenswürdig einstuft, und es handelt sich nicht um eine SWF-Datei, die mit einem Netzwerkziel veröffentlicht wurde. In Adobe AIR befindet sich die lokale Datei nicht im Ressourcenordner der Anwendung; diese Dateien werden in der Sicherheitssandbox der Anwendung abgelegt. Die Datei kann lokale Datenquellen lesen, jedoch keine Verbindung mit dem Internet herstellen. sandboxTypeREMOTELOCAL_WITH_NETWORKLOCAL_TRUSTEDAPPLICATIONLOCAL_WITH_NETWORK Die Datei ist eine lokale Datei, wurde vom Benutzer nicht als vertrauenswürdig einstuft, und es handelt sich um eine SWF-Datei, die mit einem Netzwerkziel veröffentlicht wurde.localWithNetworkString Die Datei ist eine lokale Datei, wurde vom Benutzer nicht als vertrauenswürdig einstuft, und es handelt sich um eine SWF-Datei, die mit einem Netzwerkziel veröffentlicht wurde. Die Datei kann eine Verbindung mit dem Internet herstellen, jedoch keine lokalen Datenquellen lesen. sandboxTypeREMOTELOCAL_WITH_FILELOCAL_TRUSTEDAPPLICATIONREMOTE Die Datei stammt von einer Internet-URL und kann entsprechend den domänenbasierten Sandbox-Regeln verwendet werden.remoteString Die Datei stammt von einer Internet-URL und kann entsprechend den domänenbasierten Sandbox-Regeln verwendet werden. sandboxTypeLOCAL_WITH_FILELOCAL_WITH_NETWORKLOCAL_TRUSTEDAPPLICATIONexactSettings Legt fest, wie in Flash Player oder AIR die für bestimmte Inhalteinstellungen, beispielsweise Berechtigungen für Kamera und Mikrofon, Speicheranteile oder Speicher für permanente gemeinsame Objekte, zu verwendende Domäne ausgewählt wird.BooleanDer Wert von exactSettings wurde in Flash Player oder AIR bereits mindestens einmal bei einer Entscheidung hinsichtlich der Player-Einstellungen verwendet. SecurityErrorSecurityError Legt fest, wie in Flash Player oder AIR die für bestimmte Inhalteinstellungen, beispielsweise Berechtigungen für Kamera und Mikrofon, Speicheranteile oder Speicher für permanente gemeinsame Objekte, zu verwendende Domäne ausgewählt wird. Um in der SWF-Datei die gleichen Einstellungen zu verwenden, die in Flash Player 6 verwendet wurden, setzen Sie exactSettings auf false.

In Flash Player 6 basiert die für diese Player-Einstellungen verwendete Domäne auf dem der Domäne der SWF-Datei nachgestellten Teil. Wenn die Domäne einer SWF-Datei mehr als zwei Segmente enthält, beispielsweise www.example.com, wird das erste Segment der Domäne („www“) entfernt und der restliche Teil der Domäne verwendet, d. h. example.com. In Flash Player 6 wird daher bei www.example.com und bei store.example.com die Domäne example.com als Domäne für diese Einstellungen verwendet. Genauso wird bei www.example.co.uk und store.example.co.uk die Domäne example.co.uk als Domäne für diese Einstellungen verwendet. In Flash Player 7 und späteren Versionen werden Player-Einstellungen in der Standardeinstellung entsprechend der exakten Domäne einer SWF-Datei ausgewählt. Beispiel: Eine SWF-Datei von www.example.com verwendet die Player-Einstellungen für www.example.com und eine SWF-Datei von store.example.com für store.example.com.

Wenn Security.exactSettings auf true gesetzt ist, verwendet Flash Player oder AIR exakte Domänen für Player-Einstellungen. Der Standardwert für exactSettings ist true. Wenn Sie für exactSettings einen anderen Wert als den Standardwert festlegen, tun Sie dies, bevor Ereignisse auftreten, bei denen Flash Player oder AIR Player-Einstellungen wählen muss (z. B. beim Verwenden einer Kamera oder eines Mikrofons oder beim Abrufen eines permanenten gemeinsamen Objekts.

Wenn Sie zuvor eine SWF-Datei in Version 6 veröffentlicht und daraus permanente gemeinsame Objekte erstellt haben und jetzt diese permanenten gemeinsamen Objekt aus der SWF-Datei, die Sie auf Version 7 oder höher portiert haben, abrufen müssen, setzen Sie Security.exactSettings auf false, bevor Sie SharedObject.getLocal() aufrufen.

pageDomain Ruft die Seitendomäne ab, die die SWF-Datei enthält.String Ruft die Seitendomäne ab, die die SWF-Datei enthält. Aus Sicherheitsgründen gibt die Methode nicht die vollständige URL zurück, sondern nur die Seitendomäne, zum Beispiel http://www.example.com. sandboxType Gibt den Typ der Sicherheitssandbox an, in der die aufrufende Datei verwendet wird.String Gibt den Typ der Sicherheitssandbox an, in der die aufrufende Datei verwendet wird.

Security.sandboxType weist einen der folgenden Werte auf:

  • remote (Security.REMOTE): Diese Datei stammt von einer Internet-URL und kann entsprechend den domänenbasierten Sandbox-Regeln verwendet werden.
  • localWithFile (Security.LOCAL_WITH_FILE): Diese Datei ist eine lokale Datei, wurde vom Benutzer nicht als vertrauenswürdig einstuft, und es handelt sich nicht um eine SWF-Datei, die mit einem Netzwerkziel veröffentlicht wurde. Die Datei kann lokale Datenquellen lesen, jedoch keine Verbindung mit dem Internet herstellen.
  • localWithNetwork (Security.LOCAL_WITH_NETWORK): Diese SWF-Datei ist eine lokale Datei, die für den Benutzer nicht vertrauenswürdig ist und für die Verwendung im Netzwerk veröffentlicht wurde. Die SWF-Datei kann eine Verbindung mit dem Internet herstellen, jedoch keine lokalen Datenquellen lesen.
  • localTrusted (Security.LOCAL_TRUSTED): Diese Datei ist eine lokale Datei, die für den Benutzer über den Flash Player-Einstellungsmanager oder eine FlashPlayerTrust-Konfigurationsdatei als vertrauenswürdig gekennzeichnet wurde. Die Datei kann lokale Datenquellen lesen und eine Verbindung mit dem Internet herstellen.
  • application (Security.APPLICATION): Die Datei wird in einer AIR-Anwendung ausgeführt, und sie wurde mit dem Paket (der AIR-Datei) für diese Anwendung installiert. Standardmäßig können Dateien in der Sandbox der AIR-Anwendung Cross-Skripting für jede Datei in jeder Domäne durchführen (während Dateien außerhalb der AIR-Anwendung u. U. kein Cross-Skripting für die AIR-Datei durchführen dürfen). Standardmäßig können Dateien in der Sandbox der AIR-Anwendung Inhalte und Daten aus einer beliebigen Domäne laden.

Weitere Informationen zum Thema Sicherheit finden Sie im Flash Player Developer Center im Abschnitt Sicherheit.

REMOTELOCAL_WITH_FILELOCAL_WITH_NETWORKLOCAL_TRUSTEDAPPLICATION
LoaderContext Die LoaderContext-Klasse enthält Optionen zum Laden von SWF-Dateien und anderen Mediendateien über die Loader-Klasse.Object Die LoaderContext-Klasse enthält Optionen zum Laden von SWF-Dateien und anderen Mediendateien über die Loader-Klasse. Die LoaderContext-Klasse wird als context-Parameter in den Methoden load() und loadBytes() der Loader-Klasse verwendet.

Beim Laden von SWF-Dateien mit der Loader.load()-Methode müssen zwei Entscheidungen getroffen werden: in welcher Sicherheitsdomäne wird eine geladene SWF-Datei abgelegt, und in welcher Anwendungsdomäne in dieser Sicherheitsdomäne. Weitere Informationen zu dieser Auswahl finden Sie in den Angaben zur applicationDomain- und zur securityDomain-Eigenschaft.

Beim Laden einer SWF-Datei mit der Loader.loadBytes()-Methode müssen Sie wie bei Loader.load() eine Anwendungsdomäne auswählen. Es muss jedoch keine Sicherheitsdomäne angegeben werden, da die geladene SWF-Datei von Loader.loadBytes() immer in der Sicherheitsdomäne der ladenden SWF-Datei abgelegt wird.

Beim Laden von Bildern (JPEG-, GIF- oder PNG-Dateien) anstelle von SWF-Dateien muss weder eine Sicherheitsdomäne noch eine Anwendungsdomäne angegeben werden, da dies nur für SWF-Dateien gilt. Stattdessen muss nur eine Entscheidung getroffen werden: Ist ein programmgesteuerter Zugriff auf die Pixel des geladenen Bilds erforderlich? Wenn dies der Fall ist, finden Sie entsprechende Hinweise im Abschnitt zur checkPolicyFile-Eigenschaft. Wenn Sie beim Laden eines Bildes gleichzeitig Deblocking anwenden möchten, verwenden Sie statt der LoaderContext-Klasse die JPEGLoaderContext-Klasse.

flash.display.Loader.load()flash.display.Loader.loadBytes()flash.system.ApplicationDomainflash.system.JPEGLoaderContextflash.system.LoaderContext.applicationDomainflash.system.LoaderContext.checkPolicyFileflash.system.LoaderContext.securityDomainflash.system.SecurityDomainflash.system.ImageDecodingPolicyLoaderContext Erstellt ein neues LoaderContext-Objekt mit den angegebenen Einstellungen.checkPolicyFileBooleanfalseGibt an, ob vor dem Laden des Objekts geprüft werden soll, ob es eine URL-Richtliniendatei gibt. applicationDomainflash.system:ApplicationDomainnullGibt das ApplicationDomain-Objekt zur Verwendung mit einem Loader-Objekt an. securityDomainflash.system:SecurityDomainnullGibt das SecurityDomain-Objekt an, das für ein Loader-Objekt verwendet werden soll.

Hinweis: Material in der Sicherheitssandbox der AIR-Anwendung kann kein Material aus anderen Sandboxen in seine SecurityDomain laden.

Erstellt ein neues LoaderContext-Objekt mit den angegebenen Einstellungen. Ausführliche Informationen zu diesen Einstellungen finden Sie in den Beschreibungen der Eigenschaften für diese Klasse.
flash.display.Loader.load()flash.display.Loader.loadBytes()flash.system.ApplicationDomainflash.system.SecurityDomain
allowCodeImport Legt fest, ob Sie ein Loader-Objekt zum Importieren von Inhalt mit ausführbarem Code, zum Beispiel eine SWF-Datei, in die Sicherheitssandbox des Aufrufers verwenden können.Boolean Legt fest, ob Sie ein Loader-Objekt zum Importieren von Inhalt mit ausführbarem Code, zum Beispiel eine SWF-Datei, in die Sicherheitssandbox des Aufrufers verwenden können. Es gibt zwei betroffenen Importoperationen: die Loader.loadBytes()-Methode und die Loader.load()-Methode mit LoaderContext.securityDomain = SecurityDomain.currentDomain. (Die letztgenannte Operation wird in der AIR-Anwendungssandbox nicht unterstützt.) Wenn die allowCodeImport-Eigenschaft den Wert false hat sind diese Importoperationen auf sichere Operation, zum Beispiel das Laden von Bildern, beschränkt. Normale, nicht importierende SWF-Dateien, die mit der Loader.load()-Methode laden, sind vom Wert dieser Eigenschaft nicht betroffen.

Diese Eigenschaft ist hilfreich, wenn Sie Bildinhalte in Ihre Sandbox importieren möchten - zum Beispiel, wenn Sie ein Bild aus einer anderen Domäne replizieren oder verarbeiten möchten - aber nicht das Risiko eingehen möchten, eine SWF-Datei zu empfangen, wenn Sie nur eine Bilddatei erwartet haben. Da SWF-Dateien ActionScript-Code enthalten können, ist das Importieren einer SWF-Datei viel riskanter als das Importieren einer Bilddatei.

In AIR-Material in der Anwendungssandbox ist der Standardwert false. In Nicht-Anwendungsinhalten (wozu alle Inhalte in Flash Player gehören) ist der Standardwert true.

Die allowCodeImport-Eigenschaft wurde in Flash Player 10.1 und AIR 2.0 hinzugefügt. Diese Eigenschaft steht jedoch SWF-Dateien und AIR-Anwendungen aller Versionen zur Verfügung, wenn die Flash-Laufzeitumgebung dies unterstützt.

flash.display.Loader.loadBytes()flash.display.Loader.load()securityDomain
applicationDomain Gibt die Anwendungsdomäne an, die für die Loader.load()- oder Loader.loadBytes()-Methode verwendet werden soll.nullflash.system:ApplicationDomain Gibt die Anwendungsdomäne an, die für die Loader.load()- oder Loader.loadBytes()-Methode verwendet werden soll. Verwenden Sie diese Eigenschaft nur beim Laden einer SWF-Datei, die in ActionScript 3.0 geschrieben wurde (nicht beim Laden eines Bilds oder einer SWF-Datei, die in ActionScript 1.0 oder ActionScript 2.0 geschrieben wurde).

Jede Sicherheitsdomäne ist in eine oder mehrere Anwendungsdomänen unterteilt, die durch ApplicationDomain-Objekte angegeben werden. Anwendungsdomänen dienen keinen Sicherheitszwecken, sondern der Verwaltung kooperierender Einheiten des ActionScript-Codes. Wenn Sie eine SWF-Datei von einer anderen Domäne laden und festlegen, dass die SWF-Datei in einer anderen Sicherheitsdomäne abgelegt werden kann, können Sie die Anwendungsdomäne nicht auswählen, in der die geladene SWF-Datei abgelegt wird. Wenn Sie eine Anwendungsdomäne angegeben haben, wird diese Auswahl ignoriert. Wenn Sie jedoch eine SWF-Datei in Ihre eigene Sicherheitsdomäne laden, da die SWF-Datei aus Ihrer eigenen Domäne stammt oder Sie sie in Ihre Sicherheitsdomäne importieren, können Sie die Anwendungsdomäne für die geladene SWF-Datei auswählen.

Sie können eine Anwendungsdomäne für LoaderContext.applicationDomain nur über Ihre eigene Sicherheitsdomäne übergeben. Beim Versuch, eine Anwendungsdomäne über eine andere Sicherheitsdomäne zu übergeben, wird eine SecurityError-Ausnahme ausgelöst.

Für die ApplicationDomain-Eigenschaft können Sie vier verschiedene Optionen auswählen:

  • Untergeordnete Domäne von ApplicationDomain des ladenden Objekts Dies ist die Standardoption. Sie können diese Auswahl explizit mit der Syntax new ApplicationDomain(ApplicationDomain.currentDomain) angeben. Damit kann die geladene SWF-Datei direkt die Klassen der übergeordneten Domäne verwenden, beispielsweise durch Schreiben von new MyClassDefinedInParent(). Die übergeordnete Domäne kann diese Syntax jedoch nicht verwenden. Die übergeordnete Domäne kann die Klassen der untergeordneten Domäne nur verwenden, indem ApplicationDomain.getDefinition() aufgerufen wird, um die Klassen abzurufen. Der Vorteil dieser Auswahl liegt darin, dass kein Fehler ausgegeben wird, wenn die untergeordnete Domäne eine Klasse mit demselben Namen wie eine Klasse definiert, die bereits in der übergeordneten Domäne festgelegt ist. Die Unterklasse übernimmt einfach die Definition der übergeordneten Domäne für die entsprechende Klasse. Die widersprüchliche Definition der untergeordneten Domäne wird erst verwendet, wenn sie durch die untergeordnete oder übergeordnete Domäne durch Aufrufen der ApplicationDomain.getDefinition()-Methode abgerufen wird.
  • Eigene ApplicationDomain des ladenden Objekts Sie können diese Anwendungsdomäne bei Verwendung von ApplicationDomain.currentDomain verwenden. Nach Abschluss des Ladevorgangs können in der übergeordneten und der untergeordneten Domäne jeweils die Klassen der anderen Domäne verwendet werden. Wenn die untergeordnete Domäne eine Klasse mit demselben Namen wie eine bereits in der übergeordneten Domäne festgelegte Klasse definiert, wird die Superklasse verwendet und die Unterklasse ignoriert.
  • Untergeordnete Domäne von ApplicationDomain des Systems Sie können diese Anwendungsdomäne bei Verwendung von new ApplicationDomain(null) verwenden. Damit sind das ladende und das geladene Objekt vollkommen getrennt. Sie können gesonderte Versionen von Klassen mit demselben Namen erstellen, ohne dass Konflikte auftreten oder Prioritäten festgelegt werden. Die Klassen der jeweils anderen Seite werden nur durch Aufrufen der ApplicationDomain.getDefinition()-Methode angezeigt.
  • Untergeordnete Domäne einer anderen ApplicationDomain Gelegentlich liegt möglicherweise eine komplexere ApplicationDomain-Hierarchie vor. Sie können eine SWF-Datei in einer beliebigen ApplicationDomain Ihrer eigenen SecurityDomain laden. Über new ApplicationDomain(ApplicationDomain.currentDomain.parentDomain.parentDomain) wird eine SWF-Datei beispielsweise in einer neuen untergeordneten Domäne der übergeordneten Domäne der übergeordneten Domäne der aktuellen Domäne geladen.

Nach Abschluss eines Ladevorgangs muss auf beiden Seiten (ladendes Objekt und geladenes Objekt) möglicherweise die eigene ApplicationDomain oder die ApplicationDomain der anderen Seite gesucht werden, um ApplicationDomain.getDefinition() aufzurufen. Jede Seite kann mithilfe von ApplicationDomain.currentDomain einen Verweis auf die eigene Anwendungsdomäne abrufen. Die ladende SWF-Datei kann über Loader.contentLoaderInfo.applicationDomain einen Verweis auf die ApplicationDomain der geladenen SWF-Datei abrufen. Wenn in der geladenen SWF-Datei die Art und Weise des Ladevorgangs bekannt ist, kann das ApplicationDomain-Objekt der ladenden SWF-Datei aufgerufen werden. Wenn die untergeordnete Domäne beispielsweise standardmäßig geladen wurde, kann die Anwendungsdomäne der ladenden SWF-Datei über ApplicationDomain.currentDomain.parentDomain abgerufen werden.

Weitere Informationen finden Sie im Abschnitt „ApplicationDomain-Klasse“ im Kapitel „Clientsystem-Umgebung“ im ActionScript 3.0 Entwicklerhandbuch.

flash.display.Loader.load()flash.display.Loader.loadBytes()flash.system.ApplicationDomain
checkPolicyFile Gibt an, ob der Anwendung vor dem Laden des eigentlichen Objekts eine URL-Richtliniendatei vom Server des zu ladenden Objekts herunterladen soll.falseBoolean Gibt an, ob der Anwendung vor dem Laden des eigentlichen Objekts eine URL-Richtliniendatei vom Server des zu ladenden Objekts herunterladen soll. Dieser Merker kann auf die Loader.load()-Methode, jedoch nicht auf die Loader.loadBytes()-Methode angewendet werden.

Setzen Sie diesen Merker auf true, wenn Sie ein Bild (JPEG-, GIF- oder PNG-Datei) von außerhalb der Domäne der aufrufenden SWF-Datei laden und davon ausgehen, dass Sie über ActionScript auf den Inhalt des Bilds zugreifen müssen. Beispiele für den Zugriff auf Bildinhalte sind u. a. Verweise auf die Loader.content-Eigenschaft zum Abrufen eines Bitmap-Objekts oder Aufrufe der BitmapData.draw()-Methode zum Abrufen einer Kopie der Pixel im geladenen Bild. Wenn Sie einen dieser Vorgänge starten, ohne während des Ladevorgangs einen Wert für checkPolicyFile angegeben zu haben, wird möglicherweise eine SecurityError-Ausnahme ausgegeben, da die erforderliche Richtliniendatei noch nicht heruntergeladen wurde.

Wenn Sie die Loader.load()-Methode aufrufen und LoaderContext.checkPolicyFile auf true gesetzt ist, beginnt die Anwendung erst dann, das in URLRequest.url angegebene Objekt herunterzuladen, wenn sie entweder eine relevanten URL-Richtliniendatei heruntergeladen oder festgestellt hat, dass keine Richtliniendatei existiert. Flash Player bzw. AIR berücksichtigen zuerst Richtliniendateien, die bereits heruntergeladen wurden, versuchen dann, eventuelle in Aufrufen der Security.loadPolicyFile()-Methode anstehende Richtliniendateien herunterzuladen, und dann, eine Richtliniendatei vom Standardpfad herunterzuladen, der URLRequest.url entspricht und der /crossdomain.xml auf dem gleichen Server wie URLRequest.url ist. In jedem Fall muss die gegebene Richtliniendatei unter URLRequest.url auf Grundlage des Speicherorts der Richtliniendatei vorhanden sein und die Datei muss den Zugriff mittels eines oder mehrerer <allow-access-from>-Tags zulassen.

Wenn Sie checkPolicyFile auf true setzen, wird der Hauptdownload, der in der Loader.load()-Methode angegeben ist, nicht geladen, bevor die Richtliniendatei vollständig verarbeitet wurde. Wenn die erforderliche Richtliniendatei vorhanden ist und ProgressEvent.PROGRESS- oder Event.COMPLETE-Ereignisse von der contentLoaderInfo-Eigenschaft des Loader-Objekts zurückgegeben wurden, ist der Download der Richtliniendatei abgeschlossen. Sie können dann Vorgänge durchführen, bei denen die Richtliniendatei erforderlich ist.

Wenn Sie checkPolicyFile auf true setzen und keine entsprechende Richtliniendatei vorhanden ist, wird eine Fehlermeldung erst bei einem Vorgang ausgegeben, bei dem eine SecurityError-Ausnahme ausgelöst wird. Nachdem das LoaderInfo-Objekt ein ProgressEvent.PROGRESS- oder Event.COMPLETE-Ereignis ausgelöst hat, können Sie jedoch testen, ob eine entsprechende Richtliniendatei gefunden wurde, indem Sie den Wert der LoaderInfo.childAllowsParent-Eigenschaft überprüfen.

Wenn Sie keinen Zugriff auf Pixelebene auf das geladene Bild benötigen, setzen Sie die checkPolicyFile-Eigenschaft auf true. In diesem Fall ist es nicht erforderlich, nach einer Richtliniendatei zu suchen, da dies möglicherweise den Start des Downloads verzögert und unter Umständen unnötigerweise Netzwerkbandbreite beansprucht.

Setzen Sie checkPolicyFile zudem nicht auf true, wenn Sie eine SWF-Datei mit der Loader.load()-Methode herunterladen. Dies liegt darin begründet, dass SWF-zu-SWF-Berechtigungen nicht über Richtliniendateien sondern durch die Security.allowDomain()-Methode gesteuert werden. Daher hat checkPolicyFile beim Laden einer SWF-Datei keine Auswirkung. In diesem Fall ist es nicht erforderlich, nach einer Richtliniendatei zu suchen, da dies möglicherweise den Download der SWF-Datei verzögert und unter Umständen unnötigerweise Netzwerkbandbreite beansprucht. (In Flash Player oder AIR kann nicht festgestellt werden, ob eine SWF-Datei oder ein Bild heruntergeladen wird, da die Richtliniendatei vor diesem Download heruntergeladen wird.)

Bei Verwendung von checkPolicyFile beim Herunterladen eines Objekts von einer URL, bei der möglicherweise serverseitige HTTP-Weiterleitungen verwendet werden, ist Folgendes zu beachten: Richtliniendateien werden immer von der entsprechenden ursprünglichen URL abgerufen, die Sie in URLRequest.url angeben. Wenn das endgültige Objekt aufgrund von HTTP-Weiterleitungen von einer anderen URL stammt, gelten die ursprünglich heruntergeladenen Richtliniendateien möglicherweise nicht für die endgültige URL des Objekts. Dies ist jedoch die URL, die bei Sicherheitsentscheidungen von Bedeutung ist. In diesem Fall können Sie den Wert von LoaderInfo.url nach dem Empfangen eines ProgressEvent.PROGRESS- oder Event.COMPLETE-Ereignisses überprüfen, in dem die endgültige URL des Objekts angegeben ist. Rufen Sie dann die Security.loadPolicyFile()-Methode mit der URL einer Richtliniendatei auf, die auf der endgültigen URL des Objekts beruht. Rufen Sie anschließend den Wert von LoaderInfo.childAllowsParent auf, bis er sich in true ändert.

Sie brauchen diese Eigenschaft nicht für AIR-Inhalt einstellen, der in der Anwendungssandbox ausgeführt wird. Inhalt in der AIR-Anwendungssandbox kann die BitmapData.draw()-Methode über einen beliebigen geladenen Bildinhalt als Quelle aufrufen.

flash.display.BitmapData.draw()flash.display.Loader.contentflash.display.Loader.load()flash.display.LoaderInfo.childAllowsParentflash.display.LoaderInfo.urlflash.system.Security.allowDomain()flash.system.Security.loadPolicyFile()
imageDecodingPolicy Gibt an, ob Bilddaten dekodiert werden, wenn sie gebraucht werden, oder wenn sie geladen wurden.String Gibt an, ob Bilddaten dekodiert werden, wenn sie gebraucht werden, oder wenn sie geladen wurden.

Mit der Standardrichtlinie, ImageDecodingPolicy.ON_DEMAND dekodiert die Laufzeitumgebung die Bilddaten, wenn die Daten für die Anzeige oder zu anderen Zwecken gebraucht werden. Diese Richtlinie behält das Verhalten bei, das frühere Versionen der Laufzeitumgebung verwendet haben.

Mit der Richtlinie ImageDecodingPolicy.ON_LOAD dekodiert die Laufzeitumgebung die Bilder sofort, nachdem sie geladen wurden, und bevor das complete-Ereignis abgesetzt wird. Wenn Bilder direkt nach dem Laden dekodiert werden, kann dies die Leistung von Animationen und UI verbessern, falls mehrere geladene Bilder in schneller Folge angezeigt werden, zum Beispiel bei in einer Bildlaufliste oder einem Cover Flow. Auf der anderen Seite kann die Verwendung der onLoad-Richtlinie die Spitzenspeicherlast Ihrer Anwendung erhöhen, da sich zu einem bestimmten Zeitpunkt unter Umständen mehr Bilddaten im Arbeitsspeicher befinden als dies mit der onDemand-Richtlinie der Fall wäre.

Mit beiden Richtlinien verwendet die Laufzeitumgebung dasselbe Cache- und Flush-Verhalten, nachdem das Bild dekodiert wurde. Die Laufzeitumgebung kann die dekodierten Daten jederzeit aus dem Arbeitsspeicher entfernen und das Bild neu dekodieren, wenn es wieder benötigt wird.

flash.system.ImageDecodingPolicy
parameters Ein Objekt, das die Parameter enthält, die an das LoaderInfo-Objekt des Inhalts übergeben werden sollen.Object Ein Objekt, das die Parameter enthält, die an das LoaderInfo-Objekt des Inhalts übergeben werden sollen.

Normalerweise wird der Wert der contentLoaderInfo.parameters-Eigenschaft durch die Analyse der anfordernden URL erhalten. Wenn parameters gesetzt wurde, bezieht contentLoaderInfo.parameters seinen Wert vom LoaderContext-Objekt anstatt von der anfordernden URL. Die Variable parameters akzeptiert nur Objekte, die Namen-Wert-Stringpaare enthalten, ähnlich wie URL-Parameter. Wenn das Objekt keine Namen-Wert-Stringpaare enthält, wird ein IllegalOperationError ausgegeben.

Der Zweck dieser API ist es, der ladenden SWF-Datei zu ermöglichen, ihre Parameter an eine geladene SWF-Datei weiterzuleiten. Diese Funktion ist besonders hilfreich, wenn Sie die loadBytes()-Methode verwenden, da LoadBytes kein Mittel bereitstellt, Parameter über die URL weiterzugeben. Parameter lassen sich nur an eine andere AS3-SWF-Dteai weiterleiten; eine AS1- oder AS2-SWF-Datei kann die Parameter nicht in einer zugänglichen Form erhalten, obwohl das loaderInfo.parameters-AS3-Objekt des AVM1Movies das weitergegebene Objekt ist.

Betrachten Sie zum Beispiel die folgende URL:

http://yourdomain/users/jdoe/test01/child.swf?foo=bar;

Der folgende Code verwendet die LoaderContext.parameters-Eigenschaft, um einen an diese URL übergebenen Parameter zu replizieren:

      import flash.system.LoaderContext; 
      import flash.display.Loader; 
      var l:Loader = new Loader(); 
      var lc:LoaderContext = new LoaderContext; 
      lc.parameters = { "foo": "bar" }; 
      l.load(new URLRequest("child.swf"), lc);
     

Um zu überprüfen, ob der Parameter korrekt übergeben wurde, verwenden Sie die folgende trace-Anweisung, nachdem Sie den Code ausgeführt haben:

trace(loaderInfo.parameters.foo);

Wenn der Inhalt erfolgreich geladen wurde, gibt diese trace-Anweisung „bar“ aus.

requestedContentParent Das übergeordnete Element, dem der Loader den geladenen Inhalt hinzuzufügen versucht.flash.display:DisplayObjectContainer Das übergeordnete Element, dem der Loader den geladenen Inhalt hinzuzufügen versucht.

Nachdem der Inhalt vollständig geladen wurde, wird das Loader-Objekt normalerweise zum übergeordneten Element des Inhalts. Wenn requestedContentParent festgelegt wurde, wird das dadurch angegebene Objekt zum übergeordneten Element, solange kein Laufzeitfehler die Zuweisung verhindert. Diese Neuzuweisung des übergeordneten Elements kann auch nach dem complete-Ereignis ohne Verwendung dieser Eigenschaft erfolgen. Bei der Angabe des übergeordneten Elements durch LoaderContext.requestedContentParent sind jedoch keine zusätzlichen Ereignisse erforderlich.

LoaderContext.requestedContentParent legt das gewünschte übergeordnete Element fest, bevor Skripts aus Bild Eins im geladenen Inhalt ausgeführt werden, aber nachdem der Konstruktor ausgeführt wurde. Wenn requestedContentParent den Wert null hat (den Standardwert), wird das Loader-Objekt das übergeordnete Element des Inhalts.

Wenn es sich bei dem geladenen Inhalt um ein AVM1Movie-Objekt handelt, oder wenn beim Aufruf von addChild() für das requestedContentParent-Objekt ein Fehler auftritt, geschieht Folgendes:

  • Das Loader-Objekt wird das übergeordnete Element des geladenen Inhalts.
  • Die Laufzeitumgebung setzt ein AsyncErrorEvent ab.

Wenn das angeforderte übergeordnete Element und der geladene Inhalt sich in unterschiedlichen Sicherheits-Sandboxen befinden, und wenn das angeforderte übergeordnete Element keinen Zugriff auf den geladenen Inhalt hat, geschieht Folgendes:

  • Der Loader wird das übergeordnete Element des geladenen Inhalts.
  • Die Laufzeitumgebung setzt ein SecurityErrorEvent ab.

Der folgende Code verwendet requestedContentParent, um den geladenen Inhalt in einem Sprite-Objekt zu platzieren:

      import flash.system.LoaderContext; 
      import flash.display.Loader; 
      import flash.display.Sprite; 
     
      var lc:LoaderContext = new LoaderContext(); 
      var l:Loader = new Loader(); 
      var s:Sprite = new Sprite(); 
      lc.requestedContentParent = s; 
      addChild(s); 
      l.load(new URLRequest("child.swf"), lc);
     

Wenn dieser Code ausgeführt wird, erscheint die untergeordnete SWF-Datei auf der Bühne. Diese Tatsache bestätigt, dass das Sprite-Objekt, das Sie der Bühne hinzugefügt haben, das übergeordnete Element der geladenen untergeordneten SWF-Datei ist.

securityDomain Gibt die bei einem Loader.load()-Vorgang zu verwendende Sicherheitsdomäne an.nullflash.system:SecurityDomain Gibt die bei einem Loader.load()-Vorgang zu verwendende Sicherheitsdomäne an. Verwenden Sie diese Eigenschaft nur beim Laden einer SWF-Datei (und nicht beim Laden eines Bilds).

Die Auswahl der Sicherheitsdomäne ist nur beim Laden einer SWF-Datei von Bedeutung, die möglicherweise von einer anderen Domäne (einem anderen Server) als die ladende SWF-Datei stammt. Wenn Sie eine SWF-Datei von Ihrer eigenen Domäne laden, wird sie immer in Ihrer Sicherheitsdomäne abgelegt. Wenn Sie jedoch eine SWF-Datei von einer anderen Domäne laden, stehen Ihnen zwei Optionen zur Verfügung. Sie können festlegen, dass die geladene SWF-Datei in ihrer „natürlichen“ Sicherheitsdomäne abgelegt wird, die sich von der der ladenden SWF-Datei unterscheidet. Dies ist die Standardeinstellung. Die andere Möglichkeit besteht darin, dass Sie festlegen, dass die geladene SWF-Datei in der gleichen Sicherheitsdomäne wie die ladende SWF-Datei abgelegt wird. Setzen Sie dazu myLoaderContext.securityDomain auf den gleichen Wert wie SecurityDomain.currentDomain. Dies wird als importiertes Laden bezeichnet und entspricht sicherheitstechnisch dem Kopieren der geladenen SWF-Datei auf Ihren Server und dem anschließenden Laden der Datei von diesem Server. Damit das importierte Laden erfolgreich durchgeführt wird, muss der Server der geladenen SWF-Datei über eine Richtliniendatei verfügen, die in der Domäne der ladenden SWF-Datei als vertrauenswürdig eingestuft ist.

Sie können für LoaderContext.securityDomain nur Ihre eigene Sicherheitsdomäne übergeben. Beim Versuch, andere Sicherheitsdomänen zu übergeben, wird eine SecurityError-Ausnahme ausgegeben.

Material in der AIR-Anwendungs-Sandbox kann kein Material aus anderen Sandboxen in seine SecurityDomain laden.

Weitere Informationen finden Sie im Kapitel „Sicherheit“ des ActionScript 3.0 Entwicklerhandbuchs.

flash.display.Loader.load()flash.system.SecurityDomain
allowLoadBytesCodeExecution Alte Eigenschaft, die durch allowCodeImport ersetzt wurde, aus Kompatibilitätsgründen aber weiterhin unterstützt wird.Boolean Alte Eigenschaft, die durch allowCodeImport ersetzt wurde, aus Kompatibilitätsgründen aber weiterhin unterstützt wird. Zuvor die einzige Operation, die von allowLoadBytesCodeExecution betroffen war, die Loader.loadBytes()-Methode, ab Flash Player 10.1 und AIR 2.0 ist jedoch auch die Import-Ladefunktion von Loader.load() mit LoaderContext.securityDomain = SecurityDomain.currentDomain betroffen. (Die letztgenannte Operation wird in der AIR-Anwendungssandbox nicht unterstützt.) Dieser Doppeleffekt führte dazu, dass der Eigenschaftenname allowLoadBytesCodeExecution zu spezifisch wurde, weshalb jetzt der Name allowCodeImport bevorzugt wird. Die Einstellung von allowCodeImport oder allowLoadBytesCodeExecution wirkt sich auf beide Werte aus.

Legt fest, ob Sie ein Loader-Objekt zum Importieren von Inhalt mit ausführbarem Code, zum Beispiel eine SWF-Datei, in die Sicherheitssandbox des Aufrufers verwenden können. Wenn diese Eigenschaft den Wert false hat sind diese Importoperationen auf sichere Operation, zum Beispiel das Laden von Bildern, beschränkt.

In AIR-Material in der Anwendungssandbox ist der Standardwert false. In anwendungsfremdem Inhalt ist der Standardwert true.

flash.display.Loader.loadBytes()
JPEGLoaderContext Die JPEGLoaderContext-Klasse enthält eine Eigenschaft zur Aktivierung eines Deblocking-Filters beim Laden eines JPEG-Bildes.flash.system:LoaderContext Die JPEGLoaderContext-Klasse enthält eine Eigenschaft zur Aktivierung eines Deblocking-Filters beim Laden eines JPEG-Bildes. Der Deblocking-Filter verbessert die Qualität eines Bildes bei höheren Komprimierungseinstellungen, indem er benachbarte Pixel glättet. Um bei Laden eines JPEG-Bildes Deblocking anzuwenden, erstellen Sie ein JPEGLoaderContext-Objekt und legen Sie seine deblockingFilter-Eigenschaft fest. Verwenden Sie dann den Namen des JPEGLoaderContext-Objekts als Wert des context-Parameters der load()-Methode des Loader-Objekts, um das Bild zu laden.

Die JPEGLoaderContext-Klasse erweitert die LoaderContext-Klasse. Setzen Sie die checkPolicyFile-Eigenschaft auf true, wenn Sie programmgesteuerten Zugriff auf die Pixel des geladenen Bildes benötigen (z. B. wenn Sie die BitmapData.draw()-Methode verwenden). Für AIR-Inhalt, der in der Anwendungssandbox ausgeführt wird, ist es nicht notwendig, die checkPolicyFile-Eigenschaft festzulegen.

flash.display.Loader.load()flash.display.BitmapData.draw()JPEGLoaderContext Erstellt ein neues JPEGLoaderContext-Objekt mit den festgelegten Einstellungen.deblockingFilterNumber0.0Legt die Stärke des Deblocking-Filters fest. Der Wert 1,0 bedeutet, dass der Deblocking-Filter mit voller Stärke arbeitet, während ein Wert von 0,0 den Filter deaktiviert. checkPolicyFileBooleanfalseGibt an, ob Flash Player vor dem Laden des Objekts prüfen soll, ob es eine URL-Richtliniendatei gibt. Gilt nicht für AIR-Inhalt, der in der Anwendungs-Sandbox ausgeführt wird. applicationDomainflash.system:ApplicationDomainnullGibt das ApplicationDomain-Objekt zur Verwendung mit einem Loader-Objekt an. securityDomainflash.system:SecurityDomainnullGibt das SecurityDomain-Objekt an, das für ein Loader-Objekt verwendet werden soll. Erstellt ein neues JPEGLoaderContext-Objekt mit den festgelegten Einstellungen. flash.system.LoaderContextflash.display.Loader.load()flash.display.Loader.loadBytes()flash.system.ApplicationDomainflash.system.SecurityDomaindeblockingFilter Legt die Stärke des Deblocking-Filters fest.0.0Number Legt die Stärke des Deblocking-Filters fest. Der Wert 1,0 bedeutet, dass der Deblocking-Filter mit voller Stärke arbeitet, während ein Wert von 0,0 den Filter deaktiviert.
Capabilities Die Capabilities-Klasse enthält Eigenschaften, die das System und die Laufzeitumgebung beschreiben, die eine SWF-Datei hosten.Object Die Capabilities-Klasse enthält Eigenschaften, die das System und die Laufzeitumgebung beschreiben, die eine SWF-Datei hosten. Zum Beispiel hat das Display eines Mobiltelefons möglicherweise eine Größe von 100 Quadratpixel und ist schwarzweiß, während der Bildschirm eines Computers eine Größe von 1000 Quadratpixel hat und farbig ist. Indem Sie mithilfe der Capabilities-Klasse feststellen, über welchen Funktionsumfang der Client verfügt, können Sie passenden Inhalt für möglichst viele Benutzer bereitstellen. Wenn Sie den Funktionsumfang des Geräts kennen, können Sie festlegen, dass der Server die entsprechenden SWF-Dateien sendet oder dass die Darstellung der SWF-Datei geändert wird.

Einige Funktionen von Adobe AIR sind allerdings nicht als Eigenschaften in der Capabilities-Klasse aufgelistet. Sie sind Eigenschaften anderer Klassen:

EigenschaftBeschreibungNativeApplication.supportsDockIconGibt an, ob das Betriebssystem Anwendungsdock-Symbole unterstützt.NativeApplication.supportsMenuGibt an, ob das Betriebssystem eine globale Anwendungsmenüleiste unterstützt.NativeApplication.supportsSystemTrayIconGibt an, ob das Betriebssystem Taskleistensymbole unterstützt.NativeWindow.supportsMenuGibt an, ob das Betriebssystem Fenstermenüs unterstützt.NativeWindow.supportsTransparencyGibt an, ob das Betriebssystem transparente Fenster unterstützt.

Verwenden Sie nicht Capabilities.os bzw. Capabilities.manufacturer, um eine betriebssystemspezifische Funktionalität zu ermitteln. Die Funktionalität auf dem Betriebssystem basieren zu lassen, wird nicht empfohlen, da dies zu Problemen führt, wenn eine Anwendung nicht alle möglichen Zielbetriebssysteme berücksichtigt. Verwenden Sie stattdessen die Eigenschaft, die der von Ihnen zu testenden Funktionalität entspricht.

Sie können Daten zum Funktionsumfang, die in der Capabilities.serverString-Eigenschaft als URL-kodierter String gespeichert sind, senden, und zwar mithilfe der HTTP-Methode GET oder POST. Im folgenden Beispiel ist ein Serverstring für einen Computer mit MP3-Unterstützung und einer Auflösung von 1600 x 1200 Pixel dargestellt, auf dem Windows XP ausgeführt und ein Eingabemethoden-Editor (IME) installiert ist.

A=t&SA=t&SV=t&EV=t&MP3=t&AE=t&VE=t&ACC=f&PR=t&SP=t&
     SB=f&DEB=t&V=WIN%209%2C0%2C0%2C0&M=Adobe%20Windows&
     R=1600x1200&DP=72&COL=color&AR=1.0&OS=Windows%20XP&
     L=en&PT=External&AVD=f&LFD=f&WD=f&IME=t

In der folgenden Tabelle sind die Eigenschaften der Capabilities-Klasse und die entsprechenden Serverstrings aufgeführt: Eigenschaften der Capabilities-KlasseServerstringavHardwareDisableAVDhasAccessibilityACChasAudioAhasAudioEncoderAEhasEmbeddedVideoEVhasIMEIMEhasMP3MP3hasPrintingPRhasScreenBroadcastSBhasScreenPlaybackSPhasStreamingAudioSAhasStreamingVideoSVhasTLSTLShasVideoEncoderVEisDebuggerDEBlanguageLlocalFileReadDisableLFDmanufacturerMmaxLevelIDCMLosOSpixelAspectRatioARplayerTypePTscreenColorCOLscreenDPIDPscreenResolutionXRscreenResolutionYRversionV

Es gibt auch einen WD-Serverstring, der festlegt, ob der fensterlose Modus deaktiviert ist. Der fensterlose Modus kann in Flash Player aufgrund einer Inkompatibilität mit dem Webbrowser oder einer Benutzereinstellung in der Datei mms.cfg deaktiviert werden. Es gibt keine entsprechende Capabilities-Eigenschaft.

Alle Eigenschaften der Capabilities-Klasse sind schreibgeschützt.

Im folgenden Beispiel werden die Werte ausgegeben, die im flash.system.Capabilities-Objekt gefunden wurden. Zuerst werden die Werte in ein Textfeld ausgegeben. Danach werden die Werte mithilfe mehrerer Aufrufe von trace() ausgegeben. package { import flash.display.Sprite; import flash.system.Capabilities; import flash.text.TextField; import flash.text.TextFieldAutoSize; public class CapabilitiesExample extends Sprite { public function CapabilitiesExample() { showCapabilities(); } private function showCapabilities():void { var tf:TextField = new TextField(); tf.height = 600; tf.width = 400; tf.autoSize = TextFieldAutoSize.LEFT; tf.wordWrap = true; tf.text = "avHardwareDisable: " + Capabilities.avHardwareDisable + "\nhasAccessibility: " + Capabilities.hasAccessibility + "\nhasAudio: " + Capabilities.hasAudio + "\nhasAudioEncoder: " + Capabilities.hasAudioEncoder + "\nhasEmbeddedVideo: " + Capabilities.hasEmbeddedVideo + "\nhasIME: " + Capabilities.hasIME + "\nhasMP3: " + Capabilities.hasMP3 + "\nhasPrinting: " + Capabilities.hasPrinting + "\nhasScreenBroadcast: " + Capabilities.hasScreenBroadcast + "\nhasScreenPlayback: " + Capabilities.hasScreenPlayback + "\nhasStreamingAudio: " + Capabilities.hasStreamingAudio + "\nhasStreamingVideo: " + Capabilities.hasStreamingVideo + "\nhasTLS: " + Capabilities.hasTLS + "\nhasVideoEncoder: " + Capabilities.hasVideoEncoder + "\nisDebugger: " + Capabilities.isDebugger + "\nisEmbeddedInAcrobat: " + Capabilities.isEmbeddedInAcrobat + "\nlanguage: " + Capabilities.language + "\nlocalFileReadDisable: " + Capabilities.localFileReadDisable + "\nmanufacturer: " + Capabilities.manufacturer + "\nmaxLevelIDC: " + Capabilities.maxLevelIDC + "\nos: " + Capabilities.os + "\npixelAspectRatio: " + Capabilities.pixelAspectRatio + "\nplayerType: " + Capabilities.playerType + "\nscreenColor: " + Capabilities.screenColor + "\nscreenDPI: " + Capabilities.screenDPI + "\nscreenResolutionX: " + Capabilities.screenResolutionX + "\nscreenResolutionY: " + Capabilities.screenResolutionY + "\nserverString: " + Capabilities.serverString + "\ntouchscreenType: " + Capabilities.touchscreenType + // The following capabilities are supported only when publishing for AIR. // If you are publishing for AIR, uncomment the following lines. //"\nlanguages: " + Capabilities.languages + //"\ncpuArchitecture: " + Capabilities.cpuArchitecture + //"\nsupports32BitProcesses: " + Capabilities.supports32BitProcesses + //"\nsupports64BitProcesses: " + Capabilities.supports64BitProcesses + "\nversion: " + Capabilities.version; addChild(tf); trace("avHardwareDisable: " + Capabilities.avHardwareDisable); trace("hasAccessibility: " + Capabilities.hasAccessibility); trace("hasAudio: " + Capabilities.hasAudio); trace("hasAudioEncoder: " + Capabilities.hasAudioEncoder); trace("hasEmbeddedVideo: " + Capabilities.hasEmbeddedVideo); trace("hasIME: " + Capabilities.hasIME); trace("hasMP3: " + Capabilities.hasMP3); trace("hasPrinting: " + Capabilities.hasPrinting); trace("hasScreenBroadcast: " + Capabilities.hasScreenBroadcast); trace("hasScreenPlayback: " + Capabilities.hasScreenPlayback); trace("hasStreamingAudio: " + Capabilities.hasStreamingAudio); trace("hasStreamingVideo: " + Capabilities.hasStreamingVideo); trace("hasTLS: " + Capabilities.hasTLS); trace("hasVideoEncoder: " + Capabilities.hasVideoEncoder); trace("isDebugger: " + Capabilities.isDebugger); trace("isEmbeddedInAcrobat: " + Capabilities.isEmbeddedInAcrobat); trace("language: " + Capabilities.language); trace("localFileReadDisable: " + Capabilities.localFileReadDisable); trace("manufacturer: " + Capabilities.manufacturer); trace("maxLevelIDC: " + Capabilities.maxLevelIDC); trace("os: " + Capabilities.os); trace("pixelAspectRatio: " + Capabilities.pixelAspectRatio); trace("playerType: " + Capabilities.playerType); trace("screenColor: " + Capabilities.screenColor); trace("screenDPI: " + Capabilities.screenDPI); trace("screenResolutionX: " + Capabilities.screenResolutionX); trace("screenResolutionY: " + Capabilities.screenResolutionY); trace("serverString: " + Capabilities.serverString); trace("touchscreenType: " + Capabilities.touchscreenType); // The following capabilities are supported only when publishing for AIR. // If you are publishing for AIR, uncomment the following lines. //trace("cpuArchitecture: " + Capabilities.cpuArchitecture); //trace("languages: " + Capabilities.languages); //trace("supports32BitProcesses: " + Capabilities.supports32BitProcesses); //trace("supports64BitProcesses: " + Capabilities.supports64BitProcesses); trace("version: " + Capabilities.version); } } }
avHardwareDisable Gibt an, ob der Zugriff auf die Kamera und das Mikrofon eines Benutzers vom Administrator untersagt (true) oder zugelassen (false) wurde.Boolean Gibt an, ob der Zugriff auf die Kamera und das Mikrofon eines Benutzers vom Administrator untersagt (true) oder zugelassen (false) wurde. Der Serverstring ist AVD.

Für Inhalt in Adobe AIR™ gilt diese Eigenschaft nur für Inhalt in Sicherheitssandboxen, bei denen es sich nicht um die Sicherheitssandbox der Anwendung handelt. Inhalt in der Sicherheitssandbox der Anwendung kann immer auf die Kamera und das Mikrofon des Benutzers zugreifen.

flash.media.Camera.getCamera()flash.media.Microphone.getMicrophone()Security.showSettings()
cpuArchitecture Gibt die aktuelle CPU-Architektur zurück.String Gibt die aktuelle CPU-Architektur zurück. Die cpuArchitecture-Eigenschaft kann die folgenden Strings zurückgeben: "PowerPC", "x86", "SPARC" und "ARM". Der Serverstring ist ARCH. hasAccessibility Gibt an, ob das System die Kommunikation über Eingabehilfen zur Barrierefreiheit unterstützt (true) oder nicht (false).Boolean Gibt an, ob das System die Kommunikation über Eingabehilfen zur Barrierefreiheit unterstützt (true) oder nicht (false). Der Serverstring ist ACC. flash.accessibility.Accessibility.activeflash.accessibility.Accessibility.updateProperties()hasAudioEncoder Gibt an, ob das System einen Audiostream, der beispielsweise von einem Mikrofon stammt, kodieren kann (true) oder nicht (false).Boolean Gibt an, ob das System einen Audiostream, der beispielsweise von einem Mikrofon stammt, kodieren kann (true) oder nicht (false). Der Serverstring ist AE. hasAudio Gibt an, ob das System über Audiofunktionen verfügt.Boolean Gibt an, ob das System über Audiofunktionen verfügt. Diese Eigenschaft ist immer auf true gesetzt. Der Serverstring ist A. hasEmbeddedVideo Gibt an, ob das System eingebettetes Video unterstützt (true) oder nicht (false).Boolean Gibt an, ob das System eingebettetes Video unterstützt (true) oder nicht (false). Der Serverstring ist EV. hasIME Gibt an, ob auf dem System ein Eingabemethoden-Editor (IME) installiert ist (true) oder nicht (false).Boolean Gibt an, ob auf dem System ein Eingabemethoden-Editor (IME) installiert ist (true) oder nicht (false). Der Serverstring ist IME. flash.system.IMEflash.system.System.imehasMP3 Gibt an, ob das System über einen MP3-Decoder verfügt (true) oder nicht (false).Boolean Gibt an, ob das System über einen MP3-Decoder verfügt (true) oder nicht (false). Der Serverstring ist MP3. hasPrinting Gibt an, ob das System das Drucken unterstützt (true) oder nicht (false).Boolean Gibt an, ob das System das Drucken unterstützt (true) oder nicht (false). Der Serverstring ist PR. hasScreenBroadcast Gibt an, ob das System die Entwicklung von Bildschirm-Broadcast-Anwendungen, die über Flash Media Server ausgeführt werden sollen, unterstützt (true) oder nicht unterstützt (false).Boolean Gibt an, ob das System die Entwicklung von Bildschirm-Broadcast-Anwendungen, die über Flash Media Server ausgeführt werden sollen, unterstützt (true) oder nicht unterstützt (false). Der Serverstring ist SB. hasScreenPlayback Gibt an, ob das System die Wiedergabe von Bildschirm-Broadcast-Anwendungen unterstützt (true) oder nicht unterstützt (false), die über Flash Media Server ausgeführt werden.Boolean Gibt an, ob das System die Wiedergabe von Bildschirm-Broadcast-Anwendungen unterstützt (true) oder nicht unterstützt (false), die über Flash Media Server ausgeführt werden. Der Serverstring ist SP. hasStreamingAudio Gibt an, ob das System Streamingsound wiedergeben kann (true) oder nicht (false).Boolean Gibt an, ob das System Streamingsound wiedergeben kann (true) oder nicht (false). Der Serverstring ist SA. hasStreamingVideo Gibt an, ob das System Streaming-Video wiedergeben kann (true) oder nicht (false).Boolean Gibt an, ob das System Streaming-Video wiedergeben kann (true) oder nicht (false). Der Serverstring ist SV. hasTLS Gibt an, ob das System native SSL-Sockets über NetConnection unterstützt werden (true) oder nicht (false).Boolean Gibt an, ob das System native SSL-Sockets über NetConnection unterstützt werden (true) oder nicht (false). Der Serverstring ist TLS. flash.net.NetConnection.connectedProxyTypeflash.net.NetConnection.proxyTypeflash.net.NetConnection.usingTLShasVideoEncoder Gibt an, ob das System einen Videostream, der beispielsweise von einer Webkamera stammt, kodieren (true) oder nicht kodieren (false) kann.Boolean Gibt an, ob das System einen Videostream, der beispielsweise von einer Webkamera stammt, kodieren (true) oder nicht kodieren (false) kann. Der Serverstring ist VE. isDebugger Gibt an, ob es sich bei dem System um eine spezielle Debugging-Version (true) oder um eine offiziell freigegebene Version (false) handelt.Boolean Gibt an, ob es sich bei dem System um eine spezielle Debugging-Version (true) oder um eine offiziell freigegebene Version (false) handelt. Der Serverstring ist DEB. Diese Eigenschaft ist mit true belegt, wenn die Ausführung in der Debug-Version des Flash Player oder im AIR Debug Launcher (ADL) erfolgt. isEmbeddedInAcrobat Gibt an, ob die Flash-Laufzeitumgebung in eine PDF-Datei eingebettet ist, die in Acrobat 9.0 oder höher geöffnet ist (true) oder nicht (false).Boolean Gibt an, ob die Flash-Laufzeitumgebung in eine PDF-Datei eingebettet ist, die in Acrobat 9.0 oder höher geöffnet ist (true) oder nicht (false). languages Ein Array mit Strings, die Informationen über die im Betriebssystem festgesetzten bevorzugten Sprachen des Benutzers für Benutzeroberflächen enthalten.Array Ein Array mit Strings, die Informationen über die im Betriebssystem festgesetzten bevorzugten Sprachen des Benutzers für Benutzeroberflächen enthalten. Die Strings enthalten Sprachtags (und Skript- und regionale Informationen, sofern zutreffend), die in RFC4646 (http://www.ietf.org/rfc/rfc4646.txt) definiert sind, und verwenden Bindestriche als Trennzeichen (z. B. "en-US" oder "ja-JP"). Sprachen werden im Array in der bevorzugten Reihenfolge aufgelistet, die von den Betriebssystemeinstellungen bestimmt wird.

Je nach Betriebssystem werden von den Gebietsschemastrings unterschiedliche regionale Informationen zurückgegeben. Ein Betriebssystem könnte z. B. "en-us" zurückgeben, während ein anderes "en" zurückgeben könnte.

Der erste Eintrag im zurückgegebenen Array hat im Allgemeinen die gleiche primäre Sprach-ID wie die Capabilities.language-Eigenschaft. Wenn Capabilities.languages[0] z. B. auf "en-US" gesetzt ist, dann ist die language-Eigenschaft auf "en" gesetzt. Wenn aber die Capabilities.language-Eigenschaft auf "xu" (eine unbekannte Sprache) gesetzt ist, ist das erste Element in diesem Array anders. Aus diesem Grund kann Capabilities.languages[0] genauer als Capabilities.language sein.

Der Serverstring ist LS.

language Gibt den Sprachcode des Systems an, auf dem der Inhalt ausgeführt wird.String Gibt den Sprachcode des Systems an, auf dem der Inhalt ausgeführt wird. Die Sprache wird als ein aus zwei Kleinbuchstaben bestehender Sprachcode nach ISO 639-1 angegeben. Bei Chinesisch unterscheidet ein zusätzlicher aus zwei Großbuchstaben bestehender Ländercode nach ISO 3166 zwischen vereinfachtem und traditionellem Chinesisch. Die Sprachcodes beruhen auf der englischen Bezeichnung der jeweiligen Sprache: mit hu wird beispielsweise Ungarisch (englisch: Hungarian) angegeben.

In englischen Systemen gibt diese Eigenschaft nur den Sprachcode (en), nicht jedoch den Ländercode zurück. In Microsoft Windows-Systemen gibt diese Eigenschaft die in der Benutzeroberfläche bei allen Menüs, Dialogfeldern, Fehlermeldungen und Hilfedateien verwendete Sprache zurück. In der folgenden Tabelle sind die möglichen Werte aufgelistet: SpracheWertTschechischcsDänischdaNiederländischnlEnglischdeFinnischfiFranzösischfrDeutschdeUngarischhuItalienischitJapanischjaKoreanischkoNorwegischnoAndere/unbekanntxuPolnischplPortugiesischptRussischruChinesisch (VRC)zh-CNSpanischesSchwedischsvChinesisch (Taiwan)zh-TWTürkischtr

Hinweis: Als Wert für die Capabilities.language-Eigenschaft sind nur Werte aus dieser Liste erlaubt. Aufgrund dieser Einschränkung sollten Adobe AIR-Anwendungen das erste Element im Capabilities.languages-Array verwenden, um die primäre Benutzeroberflächensprache für das System zu ermitteln.

Der Serverstring ist L.

Im folgenden Beispiel ist der angezeigte Inhalt von der Sprache des Betriebssystems auf dem Computer des Benutzers abhängig.

Die Eigenschaft Capabilities.language gibt den Sprachcode gemäß ISO 639-1 zurück (zum Beispiel „en“ für Englisch). Die Anweisung switch überprüft den Sprachcode und legt den Inhalt des Textfelds myTextField auf eine Begrüßung in der entsprechenden Sprache fest. Wenn der Sprachcode nicht unterstützt wird, wird ein Standardfehlerstring zurückgegeben.

package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.system.Capabilities; public class Capabilities_languageExample extends Sprite { public function Capabilities_languageExample() { var myTextField:TextField = new TextField(); myTextField.x = 10; myTextField.y = 10; myTextField.background = true; myTextField.autoSize = TextFieldAutoSize.LEFT; var greetingEnglish:String = "Hello World"; var greetingGerman:String = "Hallo Welt"; var greetingFrench:String = "Bonjour Monde"; var greetingSpanish:String = "Hola Mundo"; var lang:String = Capabilities.language; switch (lang) { case "en": myTextField.text = greetingEnglish; break; case "de": myTextField.text = greetingGerman; break; case "fr": myTextField.text = greetingFrench; break; case "es": myTextField.text = greetingSpanish; break; default: myTextField.text = "Sorry your system's language is not supported at this time."; } this.addChild(myTextField); } } }
languages
localFileReadDisable Gibt an, ob der Lesezugriff auf die Festplatte des Benutzers vom Administrator verweigert (true) oder zugelassen (false) wurde.Boolean Gibt an, ob der Lesezugriff auf die Festplatte des Benutzers vom Administrator verweigert (true) oder zugelassen (false) wurde. Für Inhalt in Adobe AIR gilt diese Eigenschaft nur für Inhalt in Sicherheitssandboxen, bei denen es sich nicht um die Sicherheitssandbox der Anwendung handelt. (Inhalt in der Sicherheitssandbox der Anwendung kann vom Dateisystem immer gelesen werden.) Wenn diese Eigenschaft auf true gesetzt ist, kann Flash Player keine Dateien (einschließlich der ersten Datei, mit der Flash Player gestartet wird) auf der Festplatte des Benutzers lesen. Wenn diese Eigenschaft auf true gesetzt ist, kann AIR-Inhalt außerhalb der Sicherheitssandbox der Anwendung keine Dateien von der Festplatte des Benutzers lesen. So schlagen beispielsweise Versuche fehl, eine Datei auf der Festplatte des Benutzers mit Lademethoden zu lesen, wenn diese Eigenschaft auf true gesetzt ist.

Darüber hinaus sind auch freigegebene Laufzeitbibliotheken gesperrt, wenn diese Eigenschaft auf true gesetzt ist. Das Lesen freigegebener lokaler Objekte ist jedoch unabhängig vom Wert dieser Eigenschaft möglich.

Der Serverstring ist LFD.

flash.display.Loader
manufacturer Gibt den Hersteller der ausgeführten Version des Flash Player oder der AIR-Laufzeitumgebung im Format „Adobe Betriebssystemname“ an.String Gibt den Hersteller der ausgeführten Version des Flash Player oder der AIR-Laufzeitumgebung im Format „Adobe Betriebssystemname an. Der Wert für Betriebssystemname kann "Windows", "Macintosh", "Linux" oder der Name eines anderen Betriebssystems sein. Der Serverstring ist M.

Verwenden Sie nicht Capabilities.manufacturer, um eine betriebssystemspezifische Funktionalität zu ermitteln, wenn es eine spezifischere Funktionalitätseigenschaft gibt. Die Funktionalität auf dem Betriebssystem basieren zu lassen, wird nicht empfohlen, da dies zu Problemen führt, wenn eine Anwendung nicht alle möglichen Zielbetriebssysteme berücksichtigt. Verwenden Sie stattdessen die Eigenschaft, die der von Ihnen zu testenden Funktionalität entspricht. Weitere Informationen finden Sie in der Beschreibung der Capabilities-Klasse.

maxLevelIDC Ruft die höchste H.264 Level IDC ab, die von der Hardware des Clients unterstützt wird.String Ruft die höchste H.264 Level IDC ab, die von der Hardware des Clients unterstützt wird. Medien, die auf dieser Stufe ausgeführt werden, können garantiert ausgeführt werden, während Medien, die auf der höchsten Stufe ausgeführt werden, u. U. nicht mit der höchsten Qualität ausgeführt werden. Diese Eigenschaft ist für Server nützlich, die versuchen, die Funktionalität eines Clients zu emulieren. Mit dieser Eigenschaft kann ein Server die Grafikqualität ermitteln, die an den Client gesendet werden kann.

Der Serverstring ist ML.

os Gibt das aktuelle Betriebssystem an.String Gibt das aktuelle Betriebssystem an. Die os-Eigenschaft kann die folgenden Strings zurückgeben: BetriebssystemWertWindows 7"Windows 7"Windows Vista"Windows Vista"Windows Server 2008 R2"Windows Server 2008 R2"Windows Server 2008"Windows Server 2008"Windows Home Server"Windows Home Server"Windows Server 2003 R2"Windows Server 2003 R2"Windows Server 2003"Windows Server 2003"Windows XP 64"Windows Server XP 64"Windows XP"Windows XP"Windows 98"Windows 98"Windows 95"Windows 95"Windows NT"Windows NT"Windows 2000"Windows 2000"Windows ME"Windows ME"Windows CE"Windows CE"Windows SmartPhone"Windows SmartPhone"Windows PocketPC"Windows PocketPC"Windows CEPC"Windows CEPC"Windows Mobile"Windows Mobile"Mac OS"Mac OS X.Y.Z" (wobei X.Y.Z die Versionsnummer ist, zum Beispiel: "Mac OS 10.5.2")Linux"Linux" (Flash Player fügt die Linux-Version an, zum Beispiel "Linux 2.6.15-1.2054_FC5smp"iPhone OS 4.1"iPhone3,1"

Der Serverstring ist OS.

Verwenden Sie nicht Capabilities.os, um eine betriebssystemspezifische Funktionalität zu ermitteln, wenn es eine spezifischere Funktionalitätseigenschaft gibt. Die Funktionalität auf dem Betriebssystem basieren zu lassen, wird nicht empfohlen, da dies zu Problemen führt, wenn eine Anwendung nicht alle möglichen Zielbetriebssysteme berücksichtigt. Verwenden Sie stattdessen die Eigenschaft, die der von Ihnen zu testenden Funktionalität entspricht. Weitere Informationen finden Sie in der Beschreibung der Capabilities-Klasse.

pixelAspectRatio Gibt das Pixelseitenverhältnis des Bildschirms an.Number Gibt das Pixelseitenverhältnis des Bildschirms an. Der Serverstring ist AR. playerType Gibt den Typ der Laufzeitumgebung an.String Gibt den Typ der Laufzeitumgebung an. Diese Eigenschaft weist einen der folgenden Werte auf:
  • „ActiveX“ für das in Microsoft Internet Explorer verwendete Flash Player-ActiveX-Steuerelement
  • „Desktop“ für die Adobe AIR-Laufzeitumgebung (mit Ausnahme von SWF-Inhalten, die von einer HTML-Seite geladen werden, wobei Capabilities.playerType auf „PlugIn“ gesetzt ist)
  • "External" für den externen Flash Player oder im Testmodus
  • "PlugIn" für das Flash Player-Browser-Zusatzmodul (und für SWF-Inhalte, die von einer HTML-Seite in einer AIR-Anwendung geladen werden)
  • "StandAlone" für den eigenständigen Flash Player

Der Serverstring ist PT.

screenColor Gibt die Bildschirmfarbe an.String Gibt die Bildschirmfarbe an. Dieser Eigenschaft können die Werte "color", "gray" (Graustufen) oder "bw" (schwarzweiß) zugeordnet werden. Der Serverstring ist COL. screenDPI Gibt den dpi-Wert der Bildschirmauflösung in Pixeln an.Number Gibt den dpi-Wert der Bildschirmauflösung in Pixeln an. Der Serverstring ist DP. screenResolutionX Gibt die maximale horizontale Auflösung des Bildschirms an.Number Gibt die maximale horizontale Auflösung des Bildschirms an. Der Serverstring ist R (und gibt die Breite und Höhe des Bildschirms zurück). Diese Eigenschaft wird nicht mit der Bildschirmauflösung des Benutzers aktualisiert und gibt stattdessen lediglich an, welche Auflösung beim Starten einer Flash Player- oder Adobe AIR-Anwendung verwendet wurde. Außerdem gibt der Wert nur die Auflösung des primären Bildschirms an. screenResolutionY Gibt die maximale vertikale Auflösung des Bildschirms an.Number Gibt die maximale vertikale Auflösung des Bildschirms an. Der Serverstring ist R (und gibt die Breite und Höhe des Bildschirms zurück). Diese Eigenschaft wird nicht mit der Bildschirmauflösung des Benutzers aktualisiert und gibt stattdessen lediglich an, welche Auflösung beim Starten einer Flash Player- oder Adobe AIR-Anwendung verwendet wurde. Außerdem gibt der Wert nur die Auflösung des primären Bildschirms an. Das folgende Beispiel ist ein einfacher Test, der die aktuelle Bildschirmauflösung und die Version des Betriebssystems anzeigt. Klicken Sie beim Testen dieses Beispiels auf das Textfeld, um die Eigenschaftswerte zu sehen: import flash.events.~; import flash.display.~; import flash.system.Capabilities; import flash.text.TextField; var screenInfoTxt:TextField = new TextField(); var screenInfoTxt.x = 30; var screenInfoTxt.y = 50; var screenInfoTxt.width = 300; var screenInfoTxt.height = 100; var screenInfoTxt.border = true; addChild(screenInfoTxt); addEventListener(MouseEvent.CLICK, getScreenNVersion); function getScreenNVersion(e:MouseEvent):void{ screenInfoTxt.text= "flash.system.Capabilities.screenResolutionX is : " + String(flash.system.Capabilities.screenResolutionX) + "\n" + "flash.system.Capabilities.screenResolutionY is : " + String(flash.system.Capabilities.screenResolutionY) + "\n" + "flash.system.Capabilities.version is : " + flash.system.Capabilities.version; } serverString Ein URL-kodierter String, der die Werte für jede Capabilities-Eigenschaft angibt.String Ein URL-kodierter String, der die Werte für jede Capabilities-Eigenschaft angibt.

Im folgenden Beispiel ist ein URL-kodierter String dargestellt:

A=t&SA=t&SV=t&EV=t&MP3=t&AE=t&VE=t&ACC=f&PR=t&SP=t&
	 SB=f&DEB=t&V=WIN%208%2C5%2C0%2C208&M=Adobe%20Windows&
	 R=1600x1200&DP=72&COL=color&AR=1.0&OS=Windows%20XP&
	 L=en&PT=External&AVD=f&LFD=f&WD=f

supports32BitProcesses Gibt an, ob das System das Ausführen von 32-Bit-Prozessen unterstützt.Boolean Gibt an, ob das System die Ausführung von 32-Bit-Prozessen unterstützt. Der Serverstring ist PR32. supports64BitProcesses Gibt an, ob das System die Ausführung von 64-Bit-Prozessen unterstützt.Boolean Gibt an, ob das System die Ausführung von 64-Bit-Prozessen unterstützt. Der Serverstring ist PR64. touchscreenType Gibt den Typ des unterstützten Touchscreens an, falls vorhanden.String Gibt den Typ des unterstützten Touchscreens an, falls vorhanden. Werte sind in der flash.system.TouchscreenType-Klasse definiert. Das folgende Beispiel ist ein einfacher Test, der den aktuellen Touchscreentyp anzeigt. Klicken Sie beim Testen dieses Beispiels auf ein Textfeld, um die Eigenschaftswerte zu sehen: import flash.events.~~; import flash.display.~~; import flash.system.Capabilities; import flash.text.TextField; var capabilitiesTouchScreenTypeTxt:TextField = new TextField(); capabilitiesTouchScreenTypeTxt.width = 300; capabilitiesTouchScreenTypeTxt.border = true; addChild(capabilitiesTouchScreenTypeTxt); addEventListener(MouseEvent.CLICK, getScreenKeyboardType); function getScreenKeyboardType(e:MouseEvent):void{ capabilitiesTouchScreenTypeTxt.text= "flash.system.Capabilities.touchscreenType is : " + flash.system.Capabilities.touchscreenType; } TouchscreenType-Klasseflash.ui.Mouse.supportsCursorversion Gibt die Flash Player- oder Adobe&#xAE; AIR&#xAE;-Plattform. sowie Versionsinformationen an.String Gibt die Flash Player- oder Adobe® AIR®-Plattform sowie Versionsinformationen an. Das Format der Versionsnummer sieht folgendermaßen aus: Plattform majorVersion, minorVersion, buildNumber, internalBuildNumber. Mögliche Werte für platform sind "WIN", ` "MAC", "LNX" und "AND". Es folgen einige Beispiele für die Versionsangabe:
	 WIN 9,0,0,0  // Flash Player 9 for Windows
	 MAC 7,0,25,0   // Flash Player 7 for Macintosh
	 LNX 9,0,115,0  // Flash Player 9 for Linux
	 AND 10,2,150,0 // Flash Player 10 for Android
	 

Verwenden Sie nicht Capabilities.version, um eine betriebssystemspezifische Funktionalität zu ermitteln, wenn es eine spezifischere Funktionalitätseigenschaft gibt. Die Funktionalität auf dem Betriebssystem basieren zu lassen, wird nicht empfohlen, da dies zu Problemen führt, wenn eine Anwendung nicht alle möglichen Zielbetriebssysteme berücksichtigt. Verwenden Sie stattdessen die Eigenschaft, die der von Ihnen zu testenden Funktionalität entspricht. Weitere Informationen finden Sie in der Beschreibung der Capabilities-Klasse.

Der Serverstring ist V.

Das folgende Beispiel ist ein einfacher Test, der die aktuelle Bildschirmauflösung und die Version des Betriebssystems anzeigt. Klicken Sie beim Testen dieses Beispiels auf das Textfeld, um die Eigenschaftswerte zu sehen: import flash.events.~; import flash.display.~; import flash.system.Capabilities; import flash.text.TextField; var screenInfoTxt:TextField = new TextField(); var screenInfoTxt.x = 30; var screenInfoTxt.y = 50; var screenInfoTxt.width = 300; var screenInfoTxt.height = 100; var screenInfoTxt.border = true; addChild(screenInfoTxt); addEventListener(MouseEvent.CLICK, getScreenNVersion); function getScreenNVersion(e:MouseEvent):void{ screenInfoTxt.text= "flash.system.Capabilities.screenResolutionX is : " + String(flash.system.Capabilities.screenResolutionX) + "\n" + "flash.system.Capabilities.screenResolutionY is : " + String(flash.system.Capabilities.screenResolutionY) + "\n" + "flash.system.Capabilities.version is : " + flash.system.Capabilities.version; }
fscommand Ermöglicht die Kommunikation zwischen der SWF-Datei und Flash Player oder dem Programm, in dem Flash Player ausgeführt wird, beispielsweise ein Webbrowser.Wenn die Funktion nicht als Antwort auf eine Benutzeraktion wie z. B. ein Maus- oder ein Tastendruckereignis aufgerufen wird. ErrorErrorcommandStringEin zur beliebigen Verwendung für die Hostanwendung übergebener String oder ein an Flash Player übergebener Befehl. argsStringEin zur beliebigen Verwendung für die Hostanwendung übergebener String oder ein an Flash Player übergebener Wert. Ermöglicht die Kommunikation zwischen der SWF-Datei und Flash Player oder dem Programm, in dem Flash Player ausgeführt wird, beispielsweise ein Webbrowser. Mithilfe der Funktion fscommand() können Sie zudem Meldungen an Director, Visual Basic, Visual C++ und andere Programme übergeben, die als Hosts für ActiveX-Steuerelemente verwendet werden können.

Die Funktion fscommand() ermöglicht einer SWF-Datei die Kommunikation mit einem Skript auf einer Webseite. Der Zugriff auf das Skript wird jedoch auf der Webseite durch die Einstellung allowScriptAccess gesteuert. (Sie setzen dieses Attribut in dem HTML-Code, in den die SWF-Datei eingebettet ist. In Internet Explorer ist dies das PARAM-Tag, in Netscape Navigator das EMBED-Tag.)

  • Wenn allowScriptAccess auf "sameDomain" (Standardeinstellung) gesetzt ist, ist Skripting nur von SWF-Dateien erlaubt, die in der gleichen Domäne wie die Webseite sind.
  • Wenn allowScriptAccess auf "always" gesetzt ist, kann die SWF-Datei mit der HTML-Seite kommunizieren, in der sie eingebettet ist, selbst wenn die SWF-Datei aus einer anderen Domäne als die HTML-Seite stammt.
  • Wenn allowScriptAccess auf "never" gesetzt ist, kann die SWF-Datei nicht mit HTML-Seiten kommunizieren. Bitte beachten Sie, dass dieser Wert veraltet ist und nicht empfohlen wird und nicht notwendig sein sollte, wenn Sie nur vertrauenswürdige SWF-Dateien von Ihrer eigenen Domäne bereitstellen. Falls Sie nicht vertrauenswürdige SWF-Dateien bereitstellen müssen, empfiehlt es sich, eine separate Unterdomäne zu erstellen und alle nicht vertrauenswürdigen Inhalte dort abzulegen.

Sie können eine SWF-Datei daran hindern, diese Methode aufzurufen, indem Sie auf der HTML-Seite, die den SWF-Inhalt enthält, den Parameter allowNetworking der Tags object und embed festlegen.

Die fscommand()-Funktion ist nicht erlaubt, wenn die aufrufende SWF-Datei in der lokalen Sandbox des Dateisystems oder in der Netzwerk-Sandbox befindet und die enthaltende HTML-Datei eine nicht vertrauenswürdige Sandbox ist.

Weitere Informationen zum Thema Sicherheit finden Sie im Flash Player Developer Center im Abschnitt Sicherheit.

Verwendung 1: Um mithilfe von fscommand() eine Meldung an Flash Player zu senden, müssen Sie vordefinierte Befehle und Parameter verwenden. Die folgende Tabelle enthält die Werte, die Sie in der Funktion fscommand() für die Parameter command und args einsetzen können. Diese Werte steuern SWF-Dateien, die in Flash Player wiedergegeben werden, einschließlich Projektoren. (Ein projector ist eine SWF-Datei, die in einem Format gespeichert wurde, das als eigenständige Anwendung, d. h. ohne Flash Player, ausgeführt werden kann.)

BefehlParameter (args)ZweckquitKeineSchließt den Projektor.fullscreentrue oder falseBei Angabe von true wird Flash Player in den Vollbildmodus gesetzt. Mit false wird der Player auf die normale Menüansicht zurückgesetzt.allowscaletrue oder falseBei Angabe von false wird der Player angewiesen, die SWF-Datei immer in ihrer ursprünglichen Größe darzustellen und nicht zu skalieren. Bei Angabe von true wird die SWF-Datei exakt in der vollen Größe des Players dargestellt.showmenutrue oder falseBei Angabe von true werden sämtliche Kontextmenüelemente aktiviert. Bei Angabe von false werden alle Elemente des Kontextmenüs mit Ausnahme von „Einstellungen“ und „Flash Player“ ausgeblendet.execPfad der Anwendung Führt eine Anwendung im Projektor aus.trapallkeystrue oder falseBei Angabe von true werden alle Tastenereignisse, einschließlich Tastaturbefehle, an die Prozedur onClipEvent(keyDown/keyUp)in Flash Player gesendet.

Nicht alle in der Tabelle aufgeführten Befehle sind in allen Anwendungen verfügbar:

  • In Web-Playern sind keine dieser Befehle verfügbar.
  • Alle Befehle sind in eigenständigen Projektoranwendungen verfügbar.
  • AIR-Anwendungen müssen die flash.desktop.NativeApplication-Klasse für ähnliche Funktionen verwenden, z. B. NativeApplication.nativeApplication.exit() anstelle von fscommand("quit").
  • In Test-Movie-Playern sind nur die Befehle allowscale und exec verfügbar.

Im Befehl exec können nur die Zeichen A-Z, a-z, 0-9, Punkt (.) und Unterstrich (_) verwendet werden. Der Befehl exec wird nur im Unterordner „fscommand“ ausgeführt. Mit anderen Worten: Wenn Sie mit dem Befehl exec eine Anwendung aufrufen, muss sich die Anwendung in einem Unterordner mit der Bezeichnung „fscommand“ befinden. Der Befehl exec kann nur innerhalb einer Flash-Projektordatei ausgeführt werden.

Verwendung 2: Wenn Sie mit fscommand() eine Meldung an eine Skriptsprache in einem Webbrowser (z. B. JavaScript) senden, können Sie zwei beliebige Parameter in den Parametern command und args übergeben. Bei diesen Parametern kann es sich um Strings oder Ausdrücke in einer JavaScript-Funktion handeln, mit der die Funktion fscommand() abgefangen wird.

In einem Webbrowser ruft fscommand() die JavaScript-Funktion moviename_DoFScommand auf der Webseite mit der SWF-Datei auf. Dabei ist moviename der Name des Flash-Objekts, das mit dem Attribut NAME des Tags EMBED bzw. mit der Eigenschaft „ID“ des Tags OBJECT zugewiesen wurde. Wenn Sie der SWF-Datei den Namen „myMovie“ zuweisen, wird die JavaScript-Funktion myMovie_DoFScommand aufgerufen.

Setzen Sie in der Webseite, die die SWF-Datei enthält, das allowScriptAccess-Attribut, um es der SWF-Datei wie oben beschrieben zu erlauben oder zu verbieten, auf die Webseite zuzugreifen. (Sie setzen dieses Attribut in dem HTML-Code, in den die SWF-Datei eingebettet ist. In Internet Explorer ist dies das PARAM-Tag, in Netscape Navigator das EMBED-Tag.)

Wenn Flash Player 10 oder eine spätere Version im Browser ausgeführt wird, kann diese Methode eventuell nicht programmgesteuert verwendet werden, um ein Popupfenster zu öffnen. Verschiedene Browser (und Browserkonfigurationen) blocken eventuell Popupfenster. Es kann daher nicht sichergestellt werden, dass Popupfenster eingeblendet werden. Den größten Erfolg verspricht diese Methode zum Öffnen eines Popupfensters, und zwar aufgrund von Code, der als direktes Ergebnis einer Benutzeraktion ausgeführt wird, z. B. in einer Ereignisprozedur für ein Mausklick- oder Tastendruckereignis.

Verwendung 3: Über die Funktion fscommand() können Meldungen an Director (Macromedia Director von Adobe) gesendet werden. Diese Meldungen werden von Lingo (Director-Skriptsprache) als Strings, Ereignisse oder ausführbarer Lingo-Code interpretiert. Wenn es sich bei einer Meldung um einen String oder ein Ereignis handelt, müssen Sie entsprechenden Lingo-Code erstellen, der die Meldungen der Funktion fscommand() empfängt und in Director eine Aktion aufruft. Weitere Informationen finden Sie im Director Support Center unter www.adobe.com/support/director/.

Verwendung 4: In VisualBasic, Visual C++ und anderen Programmen, in denen ActiveX-Steuerelemente ausgeführt werden können, sendet die Funktion fscommand() ein VB-Ereignis mit zwei Strings, die in der Programmiersprache der Umgebung verarbeitet werden können. Weitere Informationen erhalten Sie, indem Sie das Flash Support Center unter www.adobe.com/support/flash/ nach dem Schlüsselwort „Flash-Methode“ durchsuchen.

Hinweis: Die ExternalInterface-Klasse stellt bessere Funktionen für die Kommunikation zwischen JavaScript und ActionScript (Verwendung 2) und zwischen ActionScript und VisualBasic, Visual C++ oder anderen Programmen bereit, die ActiveX-Steuerelemente (Verwendung 4) hosten können. Verwenden Sie fscommand() weiterhin, um Meldungen an Flash Player (Verwendung 1) und Director (Verwendung 3) zu senden.

Das folgende Beispiel zeigt, wie Sie Flash Player mit fscommand() veranlassen können, in den Vollbildmodus zu wechseln und keine Skalierung zu gestatten. Anschließend wird der Bühne mithilfe von draw() ein orangefarbenes Feld hinzugefügt. Zu draw() wird ein click-Ereignis-Listener mit dem Namen clickHandler() hinzugefügt, der auf click-Ereignisse reagiert, indem Flash Player durch einen weiteren Aufruf von fscommand() veranlasst wird, die Ausführung zu beenden.

Hinweis: Dieses Beispiel sollte in einem eigenständigen Flash Player und nicht in einem Webbrowser ausgeführt werden.

package { import flash.display.Sprite; import flash.text.TextField; import flash.system.fscommand; import flash.events.MouseEvent; public class FSCommandExample extends Sprite { private var bgColor:uint = 0xFFCC00; private var size:uint = 100; public function FSCommandExample() { fscommand("fullscreen", "true"); fscommand("allowscale", "false"); draw(); } private function clickHandler(event:MouseEvent):void { fscommand("quit"); trace("clickHandler"); } private function draw():void { var child:Sprite = new Sprite(); child.graphics.beginFill(bgColor); child.graphics.drawRect(0, 0, size, size); child.graphics.endFill(); child.buttonMode = true; addEventListener(MouseEvent.CLICK, clickHandler); var label:TextField = new TextField(); label.text = "quit"; label.selectable = false; label.mouseEnabled = false; child.addChild(label); addChild(child); } } }
flash.desktop.NativeApplication
IME Mit der IME-Klasse können Sie den Eingabemethoden-Editor (Input Method Editor, IME) des Betriebssystems mithilfe einer auf einem Client-Computer ausgeführten Flash-Laufzeitanwendung direkt bearbeiten.Hiermit können Sie den Eingabemethoden-Editor (IME) des Betriebssystems direkt bearbeiten. flash.events:EventDispatcher Mit der IME-Klasse können Sie den Eingabemethoden-Editor (Input Method Editor, IME) des Betriebssystems mithilfe einer auf einem Client-Computer ausgeführten Flash-Laufzeitanwendung direkt bearbeiten. Dabei können Sie bestimmen, ob ein IME installiert ist, ob dieser aktiviert oder deaktiviert ist, und um welchen IME es sich handelt. Sie können den IME in der Anwendung aktivieren oder deaktivieren und je nach Betriebssystem weitere eingeschränkte Funktionen ausführen.

Unterstützung von AIR-Profilen: Diese Funktion wird unter Desktopbetriebssystemen unterstützt, aber nicht auf allen mobilen Geräten. Bei Geräten mit AIR für TV wird sie ebenfalls nicht unterstützt. Mit der IME.isSupported-Eigenschaft können Sie testen, ob zur Laufzeit Unterstützung gegeben ist. Weitere Informationen zum AIR-Support über mehrere Profile finden Sie unter Unterstützung von AIR-Profilen.

Benutzer können mithilfe von Eingabemethoden-Editoren ASCII-fremde Textzeichen in Multibyte-Sprachen wie Chinesisch, Japanisch oder Koreanisch eingeben. Weitere Informationen zur Verwendung von Eingabemethoden-Editoren finden Sie in der Dokumentation des Betriebssystems, für das Sie Anwendungen entwickeln. Weitere Ressourcen finden Sie auf den folgenden Websites:

  • http://www.microsoft.com/globaldev/default.mspx
  • http://developer.apple.com/documentation/
  • http://java.sun.com

Wenn ein IME auf dem Computer des Benutzers deaktiviert ist, treten mit Ausnahme von Capabilities.hasIME beim Aufrufen von IME-Methoden oder IME-Eigenschaften Fehler auf. Nach dem Aktivieren eines IME werden ActionScript-Aufrufe von IME-Methoden und IME-Eigenschaften wie erwartet durchgeführt. Wenn Sie beispielsweise einen IME für Japanisch verwenden, muss dieser aktiviert werden, bevor IME-Methoden oder IME-Eigenschaften aufgerufen werden können.

In der folgenden Tabelle sind die Plattformen aufgeführt, auf denen diese Klasse unterstützt wird:

FunktionWindowsMac OS XLinuxFeststellen, ob ein IME installiert ist Capabilities.hasIMEJaJaJaIME aktivieren/deaktivieren IME.enabledJaJaJaFeststellen, ob der IME aktiviert bzw. deaktiviert ist IME.enabledJaJaJaAbrufen oder Festlegen des IME-Konvertierungsmodus IME.conversionModeJaJa ~~~~NeinZu konvertierenden String an IME senden IME.setCompositionString()Ja ~~NeinNeinDen Originalstring vor der Konvertierung vom IME abrufen System.ime.addEventListener()Ja ~~NeinNeinAnforderung für die Konvertierung an IME senden IME.doConversion()Ja ~~NeinNein

~~ Diese Vorgänge werden nicht in allen Windows-IMEs unterstützt. Der einzige IME, der alle Vorgänge unterstützt, ist der IME für Japanisch.

~~~~ Auf Macintosh-Systemen werden diese Methoden nur im IME für Japanisch unterstützt, bei IMEs von Drittanbietern werden sie dagegen nicht unterstützt.

Die ActionScript 3.0-Version dieser Klasse unterstützt nicht Macintosh Classic.

imeComposition Wird ausgelöst, wenn ein Benutzer die Eingabe in einem Eingabemethoden-Editor (IME) abgeschlossen hat und der Lesestring verfügbar ist.flash.events.IMEEvent.IME_COMPOSITIONflash.events.IMEEvent Wird ausgelöst, wenn ein Benutzer die Eingabe in einem Eingabemethoden-Editor (IME) abgeschlossen hat und der Lesestring verfügbar ist. IMEs werden in der Regel zur Eingabe von Text für Sprachen mit Ideogrammen anstelle von Buchstaben verwendet, beispielsweise Japanisch, Chinesisch und Koreanisch. compositionAbandoned Veranlasst die Laufzeitumgebung, alle Satzvorgänge („Composition“), die zurzeit ausgeführt werden, abzubrechen. Veranlasst die Laufzeitumgebung, alle Satzvorgänge („Composition“), die zurzeit ausgeführt werden, abzubrechen. Rufen Sie diese Methode auf, wenn der Benutzer auf eine Stelle außerhalb des Satzbereichs klickt oder wenn das interaktive Objekt, das en Fokus hat, gelöscht oder zurückgesetzt wird. Die Laufzeitumgebung bestätigt den Satz, indem sie im Client confirmComposition() aufruft. Die Laufzeitumgebung setzt auch den IME zurück, um das Betriebssystem darüber zu informieren, dass der Satz abgebrochen wurde. compositionSelectionChanged Rufen Sie diese Methode auf, wenn die Auswahl innerhalb des Satzes entweder interaktiv oder programmgesteuert aktualisiert wurde.startintLegt in Bytes den Offset zum Anfang der Auswahl fest. endintLegt in Bytes den Offset zum Ende der Auswahl fest. Rufen Sie diese Methode auf, wenn die Auswahl innerhalb des Satzes entweder interaktiv oder programmgesteuert aktualisiert wurde. doConversion Weist den IME an, den ersten Kandidaten für den aktuellen Eingabestring auszuwählen.Der Aufruf war nicht erfolgreich. ErrorError Weist den IME an, den ersten Kandidaten für den aktuellen Eingabestring auszuwählen. setCompositionString Legt den IME-Eingabestring fest.Der Aufruf ist nicht erfolgreich. ErrorErrorcompositionStringDer an den IME zu sendende String. Legt den IME-Eingabestring fest. Wenn dieser String festgelegt ist, kann der Benutzer die IME-Kandidaten auswählen, bevor das Ergebnis an das Textfeld mit dem aktuellen Eingabefokus übergeben wird.

Wenn kein Textfeld mit Fokus vorhanden ist, schlägt die Methode fehl, und ein Fehler wird ausgegeben.

conversionMode Der Konvertierungsmodus des aktuellen IME.StringEine Festlegung wurde nicht erfolgreich ausgeführt. ErrorError Der Konvertierungsmodus des aktuellen IME. Mögliche Werte sind folgende IME-Modusstringkonstanten, die den Konvertierungsmodus angeben:
  • ALPHANUMERIC_FULL
  • ALPHANUMERIC_HALF
  • CHINESE
  • JAPANESE_HIRAGANA
  • JAPANESE_KATAKANA_FULL
  • JAPANESE_KATAKANA_HALF
  • KOREAN
  • UNKNOWN (schreibgeschützter Wert, der nicht festgelegt werden kann)
flash.system.IMEConversionMode.ALPHANUMERIC_FULLflash.system.IMEConversionMode.ALPHANUMERIC_HALFflash.system.IMEConversionMode.CHINESEflash.system.IMEConversionMode.JAPANESE_HIRAGANAflash.system.IMEConversionMode.JAPANESE_KATAKANA_FULLflash.system.IMEConversionMode.JAPANESE_KATAKANA_HALFflash.system.IMEConversionMode.KOREANflash.system.IMEConversionMode.UNKNOWN
enabled Gibt an, ob der System-IME aktiviert (true) oder deaktiviert (false) ist.BooleanEine Festlegung wurde nicht erfolgreich ausgeführt. ErrorError Gibt an, ob der System-IME aktiviert (true) oder deaktiviert (false) ist. Ein aktivierter IME führt Multibyte-Eingaben durch, ein deaktivierter IME führt alphanumerische Eingaben durch. isSupported Die isSupported-Eigenschaft hat den Wert „true“, wenn die IME-Klasse auf der aktuellen Plattform verfügbar ist, andernfalls hat sie den Wert „false“.Boolean Die isSupported-Eigenschaft hat den Wert true, wenn die IME-Klasse auf der aktuellen Plattform verfügbar ist, andernfalls hat sie den Wert false.
System Die System-Klasse enthält Eigenschaften, die mit lokalen Einstellungen und Vorgängen zusammenhängen.Object Die System-Klasse enthält Eigenschaften, die mit lokalen Einstellungen und Vorgängen zusammenhängen. Dazu gehören Einstellungen für Kameras und Mikrofone, Operationen mit freigegebenen Objekten und die Verwendung der Zwischenablage.

Weitere Eigenschaften und Methoden befinden sich in den folgenden anderen Klassen des flash.system-Pakets: in der Capabilities-Klasse, der IME-Klasse und der Security-Klasse.

Diese Klasse enthält lediglich statische Methoden und Eigenschaften. Sie können keine neuen Instanzen der System-Klasse erstellen.

Dieses Beispiel veranschaulicht, wie Sie Angaben zum Gesamtarbeitsspeicher des Systems in die Systemzwischenablage mit einem Aufruf von System.totalMemory in einem Aufruf der System.setClipboard()-Methode kopieren. package { import flash.display.Sprite; import flash.system.System; public class SystemExample extends Sprite { public function SystemExample() { System.setClipboard("System.totalMemory: " + System.totalMemory); } } }
flash.system.Securityflash.events.IMEEventdisposeXML Macht das angegebene XML-Objekt sofort für die Speicherbereinigung verfügbar.nodeXMLXML-Referenz, die für die Speicherbereinigung verfügbar gemacht werden soll. Macht das angegebene XML-Objekt sofort für die Speicherbereinigung verfügbar. Diese Methode entfernt über- und untergeordnete Verbindungen zwischen allen Knoten für den angegebenen XML-Knoten. exit Schließt Flash Player.codeuintEin Wert, der an das Betriebssystem übergeben wird. Wenn der Prozess normal beendet wurde, ist dieser Wert normalerweise 0. Schließt Flash Player.

Nur für die Debugger-Version des eigenständigen Flash Player.

AIR-Anwendungen sollten die NativeApplication.exit()-Methode aufrufen, um die Anwendung zu beenden.

flash.desktop.NativeApplication.exit()
gc Erzwingt den Garbagekollektor-Prozess. Erzwingt den Garbagekollektor-Prozess.

Nur für die Debugger-Version von Flash Player und AIR-Anwendungen. In AIR-Anwendungen ist die System.gc()-Methode nur in Inhalt aktiviert, der im AIR Debug Launcher (ADL) ausgeführt wird, bzw. in installierten Anwendungen in Inhalt in der Sicherheitssandbox der Anwendung.

pause Hält den Flash Player oder den AIR Debug Launcher (ADL) an. Hält den Flash Player oder den AIR Debug Launcher (ADL) an. Nach dem Aufrufen dieser Methode wird in der Anwendung nichts fortgesetzt abgesehen von der Weitergabe von Socket-Ereignissen.

Nur für die Debugger-Version des Flash Player oder den AIR Debug Launcher (ADL).

resume()
resume Nimmt die Anwendung nach dem Aufrufen von System.pause() wieder auf. Nimmt die Anwendung nach dem Aufrufen von System.pause() wieder auf.

Nur für die Debugger-Version des Flash Player oder den AIR Debug Launcher (ADL).

pause()
setClipboard Ersetzt den Inhalt der Zwischenablage durch den angegebenen Textstring.stringStringEin String mit Klartextzeichen, der in der Zwischenablage des Systems abgelegt wird und den aktuellen Inhalt (sofern vorhanden) ersetzt. Ersetzt den Inhalt der Zwischenablage durch den angegebenen Textstring. Ersetzt den Inhalt der Zwischenablage durch den angegebenen Textstring. Diese Methode funktioniert von jedem Sicherheitskontext, wenn sie als Ergebnis des Benutzerereignisses (z. B. eine Tastatur- Eingabegerät-Ereignisprozedur) aufgerufen wird.

Diese Methode wird für SWF-Inhalt bereitgestellt, der in Flash Player 9 ausgeführt wird. Sie erlaubt nur das Hinzufügen von Stringinhalt zur Zwischenablage.

Flash Player 10-Inhalt und Inhalt in der Sicherheitssandbox der Anwendung in einer AIR-Anwendung können die Clipboard.setData()-Methode aufrufen.

flash.desktop.Clipboard
freeMemory Der Speicherbetrag (in Byte), der Adobe&#xAE; Flash&#xAE; Player oder Adobe&#xAE; AIR&#xAE; zugewiesen wurde und der nicht genutzt wird.Number Der Speicherbetrag (in Byte), der Adobe® Flash® Player oder Adobe® AIR® zugewiesen wurde und der nicht genutzt wird. Dieser nicht genutzte Teil des zugewiesenen Speichers (System.totalMemory) ändert sich, wenn Garbage Collection (Speicherbereinigung) stattfindet. Verwenden Sie diese Eigenschaft, um die Garbage Collection zu überwachen. privateMemorytotalMemorytotalMemoryNumberime Der derzeit installierte System-IME.flash.system:IME Der derzeit installierte System-IME. Rufen Sie addEventListener() für diese Instanz auf, um imeComposition-Ereignisse zu registrieren. IMEConversionModeprivateMemory Der gesamte Speicher (in Byte), der von einer Anwendung genutzt wird.Number Der gesamte Speicher (in Byte), der von einer Anwendung genutzt wird. Dies ist der Betrag des residenten privaten Speichers für den gesamten Prozess.

AIR-Entwickler sollten diese Eigenschaft verwenden, um den gesamten Speicherverbrauch einer Anwendung zu ermitteln.

Bei Flash Player gehört dazu auch der Speicher, der von der Containeranwendung, zum Beispiel vom Browser, verwendet wird.

freeMemorytotalMemorytotalMemoryNumber
totalMemoryNumber Die Größe des zurzeit genutzten Speichers (in Byte), der direkt von Flash Player oder AIR zugewiesen wurde. Number Die Größe des zurzeit genutzten Speichers (in Byte), der direkt von Flash Player oder AIR zugewiesen wurde.

Diese Eigenschaft wird als Typ „Number“ ausgedrückt, wodurch höhere Werte möglich sind als mit der System.totalMemory-Eigenschaft, die den Typ „int“ aufweist.

Diese Eigenschaft gibt nicht den gesamten Speicher zurück, der von einer Adobe AIR-Anwendung oder von der Anwendung, die den Flash Player-Inhalt enthält (zum Beispiel ein Browser) genutzt wird. Durch den Browser oder das Betriebssystem kann zusätzlicher Speicher belegt werden. Die System.privateMemory-Eigenschaft gibt den gesamten Speicher an, der von einer Anwendung genutzt wird.

freeMemoryprivateMemorytotalMemory
totalMemory Die Größe des zurzeit genutzten Speichers (in Byte), der direkt von Flash Player oder AIR zugewiesen wurde. uint Die Größe des zurzeit genutzten Speichers (in Byte), der direkt von Flash Player oder AIR zugewiesen wurde.

Diese Eigenschaft gibt nicht den gesamten Speicher zurück, der von einer Adobe AIR-Anwendung oder von der Anwendung, die den Flash Player-Inhalt enthält (zum Beispiel ein Browser) genutzt wird. Durch den Browser oder das Betriebssystem kann zusätzlicher Speicher belegt werden. Die System.privateMemory-Eigenschaft gibt den gesamten Speicher an, der von einer Anwendung genutzt wird.

Wenn der Wert des zugewiesenen Speichers größer als der Höchstwert für ein uint-Objekt (uint.MAX_VALUE, oder 4.294.967.295) ist, wird diese Eigenschaft auf 0 gesetzt. Die System.totalMemoryNumber-Eigenschaft lässt größere Werte zu.

freeMemoryprivateMemorytotalMemoryNumber
useCodePage Ein boolescher Wert, der bestimmt, welche Codepage in Flash Player zur Erkennung externer Textdateien verwendet werden soll.Boolean Ein boolescher Wert, der bestimmt, welche Codepage in Flash Player zur Erkennung externer Textdateien verwendet werden soll. Wenn die Eigenschaft den Wert false hat, werden externe Textdateien als Unicode interpretiert. (Diese Dateien müssen beim Speichern als Unicode kodiert werden.) Wenn die Eigenschaft auf true gesetzt ist, werden externe Textdateien mit der herkömmlichen Codepage des Betriebssystems interpretiert, unter dem die Anwendung ausgeführt wird. Der Standardwert useCodePage ist false.

Text, den Sie als eine externe Datei laden (mit Loader.load(), der URLLoader-Klasse oder URLStream), muss als Unicode gespeichert worden sein, damit die Anwendung ihn als Unicode erkennt. Wenn Sie externe Dateien als Unicode kodieren möchten, müssen Sie die Dateien in einer Anwendung speichern, die Unicode unterstützt, beispielsweise Notepad unter Windows.

Wenn Sie externe Textdateien laden, die nicht als Unicode kodiert sind, setzen Sie useCodePage auf true. Fügen Sie Folgendes als erste Codezeile der Datei, die die Daten lädt, hinzu (für Flash Professional, fügen Sie es dem ersten Bild hinzu):

System.useCodePage = true;

Wenn dieser Code vorhanden ist, werden externe Textdateien von der Anwendung mit der Standard-Codepage des Betriebssystems interpretiert. Unter einem deutschen Windows-Betriebssystem ist dies zum Beispiel im Allgemeinen CP1252, unter einem japanischen Betriebssystem Shift-JIS.

Wenn Sie useCodePage auf true setzen, wird Text in Flash Player 6 und aktuelleren Versionen wie in Flash Player 5 behandelt. (In Flash Player 5 wird Text so behandelt, als ob die herkömmliche Codepage des Betriebssystems verwendet wird, unter dem Flash Player ausgeführt wird.)

Wenn Sie useCodePage auf true setzen, müssen Sie darauf achten, dass die Standard-Codepage des Betriebssystems, unter dem die Anwendung ausgeführt wird, die in der externen Textdatei verwendeten Zeichen enthält, damit der Text angezeigt werden kann. Wenn Sie beispielsweise eine externe Textdatei mit chinesischen Zeichen laden, werden die Zeichen unter einem System mit der Codepage CP1252 nicht angezeigt, da diese Codepage keine chinesischen Zeichen enthält.

Sie können sicherstellen, dass die externen Textdateien in Ihrer Anwendung auf allen Plattformen angezeigt werden, indem Sie alle externen Textdateien als Unicode kodieren und useCodePage auf false gesetzt lassen. Somit wird der Text von der Anwendung (Flash Player 6 und höher oder AIR) als Unicode erkannt.

flash.display.Loader.load()
SecurityDomain Die SecurityDomain-Klasse gibt die aktuelle Sicherheitssandbox an, die auch als Sicherheitsdomäne bezeichnet wird.Object Die SecurityDomain-Klasse gibt die aktuelle Sicherheitssandbox an, die auch als Sicherheitsdomäne bezeichnet wird. Durch Übergeben einer Instanz dieser Klasse für Loader.load() können Sie festlegen, dass geladene Medien in einer bestimmten Sandbox platziert werden. currentDomain Ruft die aktuelle Sicherheitsdomäne ab.flash.system:SecurityDomain Ruft die aktuelle Sicherheitsdomäne ab. flash.display.Loader.load()flash.display.Loader.loadBytes()flash.system.LoaderContextSystemUpdater Die SystemUpdater-Klasse ermöglicht Ihnen die Aktualisierung der Flash Player-Module, zum Beispiel DRM-Modul für Flash Access sowie von Flash Player selbst.flash.events:EventDispatcher Die SystemUpdater-Klasse ermöglicht Ihnen die Aktualisierung der Flash Player-Module, zum Beispiel DRM-Modul für Flash Access sowie von Flash Player selbst. Verfügbare Module sind in der SystemUpdaterType-Klasse aufgeführt.

Flash Player identifiziert das Erfordernis eines Flash-Access-Modulupdates, indem ein NetStatusEvent-Ereignis abgesetzt wird. Das Ereignis hat eine code-Eigenschaft mit dem Wert "DRM.UpdateNeeded". Für Updates des Flash Access-Moduls ist keine Benutzerzustimmung erforderlich. Warten Sie auf das Ereignis und initiieren Sie das Update, indem Sie update("DRM") aufrufen.

Flash Player identifiziert das Erfordernis eines Player-Updates, indem ein StatusEvent-Ereignis abgesetzt wird, mit verschiedenen möglichen Werten für die code-Eigenschaft (siehe das status-Ereignis). Für Updates des Players ist das Einverständnis des Benutzers erforderlich. Warten Sie auf das Ereignis und geben Sie dem Benutzer die Möglichkeit, das Update auszuführen. Der Benutzer muss dem Update zustimmen und es, zum Beispiel durch Klicken auf eine Schaltfläche, einleiten. Sie können das Update des Players dann direkt in ActionScript initiieren, indem Sie update("SYSTEM") aufrufen.

Hinweis: Die SystemUpdater-API wird auf allen Desktopplattformen unterstützt.

flash.system.SystemUpdaterTypecancel Wird abgesetzt, wenn ein Update des Players vom Benutzer abgebrochen wird.flash.events.Event.CANCELflash.events.Event Wird abgesetzt, wenn ein Update des Players vom Benutzer abgebrochen wird. Dieses Ereignis wird nur dann abgesetzt, wenn ein Update des Typs SystemUpdaterType.SYSTEM angefordert wird und der Benutzer das Update abbricht. complete Wird abgesetzt, wenn das Update abgeschlossen ist.flash.events.Event.COMPLETEflash.events.Event Wird abgesetzt, wenn das Update abgeschlossen ist. securityError Wird beim Auftreten eines Sicherheitsfehlers abgesetzt.flash.events.SecurityErrorEvent.SECURITY_ERRORflash.events.SecurityErrorEvent Wird beim Auftreten eines Sicherheitsfehlers abgesetzt. Ein Sicherheitsfehler, der diese Ereignis auslösen kann, tritt zum Beispiel auf, wenn der Player versucht, ein Update auszuführen, dies von der Sicherheitsrichtlinie jedoch nicht zugelassen wird. ioError Wird beim Auftreten eines E/A-Fehlers abgesetzt.flash.events.IOErrorEvent.IO_ERRORflash.events.IOErrorEvent Wird beim Auftreten eines E/A-Fehlers abgesetzt. Ein Fehler, der dieses Ereignis auslösen kann, ist zum Beispiel eine unterbrochene Internetverbindung. progress Wird abgesetzt, um den Fortschritt des Downloads anzuzeigen.flash.events.ProgressEvent.PROGRESSflash.events.ProgressEvent Wird abgesetzt, um den Fortschritt des Downloads anzuzeigen. Dieses Ereignis entspricht dem progress-Ereignis in den Loader- und URLLoader-Klassen. status Wird abgesetzt, wenn der Download fehlschlägt.flash.events.StatusEvent.STATUSflash.events.StatusEvent Wird abgesetzt, wenn der Download fehlschlägt. Ein Update kann aus einem der folgenden Gründe fehlschlagen:

  • Der Aufrufer wird auf einer nicht unterstützten Plattform oder Architektur ausgeführt. In diesem Fall hat die code-Eigenschaft den Wert „DRM.UpdateFailedNotSupported“ und die level-Eigenschaft hat den Wert „error“.
  • Das angeforderte Updatepaket wurde auf dem Server nicht gefunden. In diesem Fall hat die code-Eigenschaft den Wert „DRM.UpdateFailedNotCurrentlyAvailable“ und die level-Eigenschaft hat den Wert „error“.
  • Das Flash Access-Modul ist nicht installiert. Dieser Fehler ähnelt dem „DRM.UpdateNeeded“-Code, der von NetStatusEvent abgesetzt wird. In diesem Fall muss jedoch zunächst eine neuere Version von Flash Player heruntergeladen werden. In diesem Fall hat die code-Eigenschaft den Wert „DRM.UpdateNeededButIncompatible“ und die level-Eigenschaft hat den Wert „error“. Um ein Update von Flash Player auszuführen, rufen Sie SystemUpdater.update(SystemUpdaterType.SYSTEM) auf.
  • Das neue DRM-Modul konnte nicht heruntergeladen werden. In diesem Fall hat die code-Eigenschaft den Wert „DRM.UpdateFailed“ und die level-Eigenschaft hat den Wert „error“.

open Wird abgesetzt, wenn ein Update beginnt.flash.events.Event.OPENflash.events.Event Wird abgesetzt, wenn ein Update beginnt. Das Update ist abgeschlossen, wenn ein „complete“-Ereignis gesendet wird, oder wenn ein IOErrorEvent, SecurityErrorEvent oder StatusEvent gesendet wird. SystemUpdater Konstruktor. Konstruktor. cancel Bricht ein aktives Update ab. Bricht ein aktives Update ab. update Beginnt mit einem Update eines gegebenen Typs.typeString Beginnt mit einem Update eines gegebenen Typs. Updatetypen sind in der SystemUpdaterType-Klasse definierte Stringkonstanten. In allen Browsern ist jeweils nur ein Update gleichzeitig zulässig.

Warten Sie nach Beginn des Updates auf die in dieser Klasse definierten Ereignisse. Die folgenden Ereignisse geben das Ende eines Updates an und lassen ein neues Update bzw. einen neuen Updateversuch zu, zum Beispiel durch Aufrufen der update()-Funktion:

  • complete
  • cancel
  • securityError
  • ioError
  • status

flash.system.SystemUpdaterType