flash.systemImageDecodingPolicy La classe ImageDecodingPolicy définit les valeurs de la propriété imageDecodingPolicy de la classe LoaderContext.La classe ImageDecodingPolicy définit les valeurs de la propriété imageDecodingPolicy de la classe LoaderContext. Object La classe ImageDecodingPolicy définit les valeurs de la propriété imageDecodingPolicy de la classe LoaderContext. LoaderContext.imageDecodingPolicyON_DEMAND Indique que l’image en cours de chargement sera décodée tant que cela sera nécessaire.onDemandString Indique que l’image en cours de chargement sera décodée tant que cela sera nécessaire. ON_LOAD Indique que l’image sera décodée lorsqu’elle sera chargée, avant l’envoi de l’événement complete.onLoadString Indique que l’image sera décodée lorsqu’elle sera chargée, avant l’envoi de l’événement complete. SystemUpdaterType La classe SystemUpdaterType fournit les constantes pour une mise à jour du système.Object La classe SystemUpdaterType fournit les constantes pour une mise à jour du système. Ces constantes sont utilisées dans la fonction SystemUpdater.update().

Remarque : l’API de SystemUpdater est prise en charge sur les plates-formes de bureau.

DRM Met à jour le module DRM.drmString Met à jour le module DRM. SYSTEM Met à jour le moteur d’exécution du lecteur.systemString Met à jour le moteur d’exécution du lecteur.
IMEConversionMode Cette classe contient des constantes à utiliser avec la propriété IME.conversionMode.Object Cette classe contient des constantes à utiliser avec la propriété IME.conversionMode. La définition de conversionMode sur ALPHANUMERIC_FULL ou JAPANESE_KATAKANA_FULL force le lecteur à utiliser une police complète, tandis que ALPHANUMERIC_HALF ou JAPANESE_KATAKANA_HALF utilise une police de demi-largeur. flash.system.IME.conversionModeALPHANUMERIC_FULL La chaîne « ALPHANUMERIC_FULL » à utiliser avec la propriété IME.conversionMode.ALPHANUMERIC_FULLString La chaîne "ALPHANUMERIC_FULL" à utiliser avec la propriété IME.conversionMode. Cette constante est utilisée sur tous les IME. Utilisez la syntaxe IMEConversionMode.ALPHANUMERIC_FULL. flash.system.IME.conversionModeALPHANUMERIC_HALF La chaîne « ALPHANUMERIC_HALF » à utiliser avec la propriété IME.conversionMode.ALPHANUMERIC_HALFString La chaîne "ALPHANUMERIC_HALF" à utiliser avec la propriété IME.conversionMode. Cette constante est utilisée sur tous les IME. Utilisez la syntaxe IMEConversionMode.ALPHANUMERIC_HALF. flash.system.IME.conversionModeCHINESE La chaîne « CHINESE » à utiliser avec la propriété IME.conversionMode.CHINESEString La chaîne "CHINESE" à utiliser avec la propriété IME.conversionMode. Cette constante est utilisée sur les IME chinois simplifié et traditionnel. Utilisez la syntaxe IMEConversionMode.CHINESE. flash.system.IME.conversionModeJAPANESE_HIRAGANA La chaîne « JAPANESE_HIRAGANA » à utiliser avec la propriété IME.conversionMode.JAPANESE_HIRAGANAString La chaîne "JAPANESE_HIRAGANA" à utiliser avec la propriété IME.conversionMode. Cette constante est utilisée sur les IME japonais. Utilisez la syntaxe IMEConversionMode.JAPANESE_HIRAGANA. flash.system.IME.conversionModeJAPANESE_KATAKANA_FULL La chaîne « JAPANESE_KATAKANA_FULL » à utiliser avec la propriété IME.conversionMode.JAPANESE_KATAKANA_FULLString La chaîne "JAPANESE_KATAKANA_FULL" à utiliser avec la propriété IME.conversionMode. Cette constante est utilisée sur les IME japonais. Utilisez la syntaxe IMEConversionMode.JAPANESE_KATAKANA_FULL. flash.system.IME.conversionModeJAPANESE_KATAKANA_HALF La chaîne « JAPANESE_KATAKANA_HALF » à utiliser avec la propriété IME.conversionMode.JAPANESE_KATAKANA_HALFString La chaîne "JAPANESE_KATAKANA_HALF" à utiliser avec la propriété IME.conversionMode. Cette constante est utilisée sur les IME japonais. Utilisez la syntaxe IMEConversionMode.JAPANESE_KATAKANA_HALF. flash.system.IME.conversionModeKOREAN La chaîne « KOREAN » à utiliser avec la propriété IME.conversionMode.KOREANString La chaîne "KOREAN" à utiliser avec la propriété IME.conversionMode. Cette constante est utilisée sur les IME coréens. Utilisez la syntaxe IMEConversionMode.KOREAN. flash.system.IME.conversionModeUNKNOWN La chaîne « UNKNOWN » qui peut être renvoyée par un appel à la propriété IME.conversionMode.UNKNOWNString La chaîne "UNKNOWN" qui peut être renvoyée par un appel à la propriété IME.conversionMode. Cette valeur ne peut pas être définie et n’est renvoyée que si le lecteur n’est pas en mesure d’identifier l’IME actif. Utilisez la syntaxe IMEConversionMode.UNKNOWN. flash.system.IME.conversionModeSecurityPanel La classe SecurityPanel fournit des valeurs pour spécifier le panneau Paramètres de sécurité à afficher.Object La classe SecurityPanel fournit des valeurs pour spécifier le panneau Paramètres de sécurité à afficher.

Cette classe contient des constantes statiques qui sont utilisées avec la méthode Security.showSettings(). Vous ne pouvez pas créer d’occurrences de la classe SecurityPanel.

L’exemple suivant indique comment un événement click sur un objet Sprite permet d’afficher le panneau des paramètres de stockage local de la boîte de dialogue Paramètres de Flash Player. Un cadre orange est ajouté à la scène à l’aide de la méthode draw(). Dans draw(), un écouteur de l’événement click est ajouté sous le nom clickHandler(). Il répond aux événements click en ouvrant le panneau des paramètres de stockage local de Flash Player. 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 Si transmis à Security.showSettings(), affiche le panneau Caméra dans la section Paramètres de Flash Player.cameraString Si transmis à Security.showSettings(), affiche le panneau Caméra dans la section Paramètres de Flash Player. Security.showSettings()DEFAULT Si transmis à Security.showSettings(), affiche le dernier panneau activé par l’utilisateur avant la fermeture de Paramètres de Flash Player.defaultString Si transmis à Security.showSettings(), affiche le dernier panneau activé par l’utilisateur avant la fermeture de Paramètres de Flash Player. Security.showSettings()DISPLAY Si transmis à Security.showSettings(), affiche le panneau d’affichage dans la section Paramètres de Flash Player.displayString Si transmis à Security.showSettings(), affiche le panneau d’affichage dans la section Paramètres de Flash Player. Security.showSettings()LOCAL_STORAGE Si transmis à Security.showSettings(), affiche le panneau des paramètres de stockage local dans la section Paramètres de Flash Player.localStorageString Si transmis à Security.showSettings(), affiche le panneau des paramètres de stockage local dans la section Paramètres de Flash Player. Security.showSettings()MICROPHONE Si transmis à Security.showSettings(), affiche le panneau Microphone dans la section Paramètres de Flash Player.microphoneString Si transmis à Security.showSettings(), affiche le panneau Microphone dans la section Paramètres de Flash Player. Security.showSettings()PRIVACY Si transmis à Security.showSettings(), affiche le panneau des paramètres de confidentialité dans la section Paramètres de Flash Player.privacyString Si transmis à Security.showSettings(), affiche le panneau des paramètres de confidentialité dans la section Paramètres de Flash Player. Security.showSettings()SETTINGS_MANAGER Si transmis à Security.showSettings(), affiche le gestionnaire de paramètres (dans une fenêtre distincte du navigateur).settingsManagerString Si transmis à Security.showSettings(), affiche le gestionnaire de paramètres (dans une autre fenêtre du navigateur). Security.showSettings()
TouchscreenType La classe TouchscreenType est une classe d’énumération qui fournit des valeurs pour les différents types d’écrans tactiles.Object La classe TouchscreenType est une classe d’énumération qui fournit des valeurs pour les différents types d’écrans tactiles.

Utilisez les valeurs définies par la classe TouchscreenType avec la propriété Capabilities.touchscreenType.

L'exemple suivant est un test simple qui indique l'état actuel des touches « Verrouillage numérique » et « Verrouillage majuscules » ainsi que le type de clavier et le type d'écran tactile dans l'environnement en cours d'exécution. Lors du test de cet exemple, cliquez sur la zone de texte pour afficher les valeurs de la propriété : 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 Ecran tactile conçu pour répondre aux appuis avec les doigts. fingerString Ecran tactile conçu pour répondre aux appuis avec les doigts. NONE L’ordinateur ou le périphérique ne dispose pas d’un tactile tactile pris en charge.noneString L’ordinateur ou le périphérique ne dispose pas d’un tactile tactile pris en charge. STYLUS Ecran tactile conçu pour une utilisation avec un stylet.stylusString Ecran tactile conçu pour une utilisation avec un stylet.
ApplicationDomain La classe ApplicationDomain est un conteneur pour les groupes discrets de définitions de classes.Object La classe ApplicationDomain est un conteneur pour les groupes discrets de définitions de classes. Les domaines d’application sont utilisés pour créer des partitions entre les classes qui appartiennent au même domaine de sécurité. Ils autorisent des définitions multiples de la même classe et permettent aux enfants de recycler les définitions des parents.

Les domaines d’application sont utilisés lorsqu’un fichier SWF externe est chargé à l’aide de la classe Loader. Toutes les définitions ActionScript 3.0 du fichier SWF chargé sont stockées dans le domaine d’application, qui est spécifié par la propriété applicationDomain de l’objet LoaderContext que vous transmettez en tant que paramètre context de la méthode load() ou loadBytes() de l’objet Loader. L’objet LoaderInfo contient également une propriété applicationDomain en lecture seule.

L’ensemble du code d’un fichier SWF est défini de sorte à exister dans un domaine d’application. Votre application principale s’exécute dans le domaine d’application en cours. Le domaine du système contient tous les domaines d’application, y compris le domaine en cours ; il contient donc toutes les classes Flash Player.

A l’exception du domaine du système, tous les domaines d’application sont associés à un domaine du parent. Le domaine parent du domaine d’application de votre application principale est le domaine système. Les classes chargées ne sont définies que si leur parent ne les définit pas encore. Vous ne pouvez pas remplacer une définition de classe chargée par une définition plus récente.

Pour obtenir des exemples d’utilisation de domaines d’application, voir le Guide du développeur d’ActionScript 3.0.

La fonction constructeur ApplicationDomain() permet de créer un objet ApplicationDomain.

L’exemple suivant illustre le chargement de la classe pendant la période d’exécution, ainsi que les différentes façons d’appeler les méthodes publiques d’une classe qui réside dans un autre fichier SWF.

Remarques :

  • Dans la mesure où la classe ClassLoader charge un fichier SWF, la sécurité locale doit porter au niveau du système de fichiers.
  • Pour exécuter cet exemple, vous devez disposer d’un fichier swf appelé RuntimeClasses.swf et présent dans le même dossier que le fichier ApplicationDomainExample.swf.

Commencez par créer le fichier RuntimeClasses.swf à partir du code suivant :

package { import flash.display.Sprite; public class RuntimeClasses extends Sprite { public function RuntimeClasses() {} public function greet():String { return("Hello World"); } } }

Mettez ensuite en œuvre le code suivant :

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)); } }
Si plusieurs fichiers SWF contiennent des classes compilées sous le même nom, mais avec des mises en œuvre différentes, vous pouvez séparer les classes des fichiers SWF chargés de façon externe, comme l’illustre l’exemple suivant. Précédemment, le fichier SWF enfant devait utiliser ApplicationDomain.currentDomain. Dans ce cas, un nouvel objet ApplicationDomain est créé, de façon à ce que les propriétés et les méthodes de la classe Greeter qui sont chargées en deuxième ne remplacent pas les propriétés et les méthodes de la première classe Greeter. Vous pouvez tester ceci en modifiant la propriété context.applicationDomain de la méthode load de ClassLoader.

Remarques :

  • Dans la mesure où la classe ClassLoader charge un fichier SWF, la sécurité locale doit porter au niveau du système de fichiers.
  • Pour exécuter cet exemple, vous devez disposer de deux fichiers SWF appelés Greeter.swf et présents dans les dossiers « en » et « es ».

Créez un fichier Greeter.as dans le répertoire « en » avec le code suivant :

package { import flash.display.Sprite; public class Greeter extends Sprite { public function Greeter() { } public function greet():String { return("Good Morning"); } } }

Créez ensuite un fichier Greeter.as similaire dans le répertoire « es » :

package { import flash.display.Sprite; public class Greeter extends Sprite { public function Greeter() { } public function greet():String { return("Buenos Dias"); } } }

Compilez les fichiers SWF de ces deux dossiers, puis mettez en œuvre le code suivant :

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 Crée un domaine d’application.parentDomainflash.system:ApplicationDomainnullSi aucun domaine parent n’est transmis, ce domaine d’application prend le domaine système en tant que parent. Crée un domaine d’application. getDefinition Extrait une définition publique du domaine d’application spécifié.Aucune définition publique n’existe sous le nom spécifié. ReferenceErrorReferenceErrorObjet associé à la définition. ObjectnameStringLe nom de la définition. Extrait une définition publique du domaine d’application spécifié. La définition peut appartenir à une classe, un nom d’espace ou une fonction. hasDefinition Vérifie si une définition publique existe au sein du domaine d’application spécifié.Valeur true si la définition spécifiée existe, false dans le cas contraire. BooleannameStringLe nom de la définition. Vérifie si une définition publique existe au sein du domaine d’application spécifié. La définition peut appartenir à une classe, un nom d’espace ou une fonction. MIN_DOMAIN_MEMORY_LENGTH Extrait la longueur minimale de l’objet de mémoire qui doit être utilisée comme ApplicationDomain.domainMemory.uint Extrait la longueur minimale de l’objet de mémoire qui doit être utilisée comme ApplicationDomain.domainMemory. currentDomain Extrait le domaine d’application actuel où le code est en cours d’exécution.flash.system:ApplicationDomain Extrait le domaine d’application actuel où le code est en cours d’exécution. domainMemory Extrait et définit l’objet sur lequel les opérations de mémoire s’appliquent pour tout le domaine au sein de ce ApplicationDomain.flash.utils:ByteArray Extrait et définit l’objet sur lequel les opérations de mémoire s’appliquent pour tout le domaine au sein de ce ApplicationDomain. parentDomain Définit le domaine parent de ce domaine d’application.flash.system:ApplicationDomain Définit le domaine parent de ce domaine d’application.
Security La classe Security permet de spécifier la façon dont le contenu peut communiquer dans différents domaines.Object La classe Security permet de spécifier la façon dont le contenu peut communiquer dans différents domaines. L’exemple suivant indique comment un événement click sur un objet Sprite permet d’afficher le panneau des paramètres de stockage local de la boîte de dialogue Paramètres de Flash Player. Un cadre orange est ajouté à la scène à l’aide de la méthode draw(). Dans draw(), un écouteur de l’événement click est ajouté sous le nom clickHandler(). Il répond aux événements click en ouvrant le panneau des paramètres de stockage local de Flash Player. 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 Permet aux fichiers SWF figurant dans les domaines identifiés d’accéder aux objets et aux variables du fichier SWF qui contient l’appel à allowDomain().L’appel de cette méthode depuis le code dans le sandbox de sécurité de l’application AIR émet une exception SecurityError. Le contenu situé en dehors du sandbox de sécurité de l’application ne peut pas effectuer la programmation croisée du contenu du sandbox de sécurité de l’application. SecurityErrorSecurityErrordomainsUne ou plusieurs chaînes ou objets URLRequest qui nomment les domaines à partir desquels vous souhaitez autoriser l’accès. Vous pouvez spécifier le domaine spécial « ~~ » pour autoriser l’accès à partir de tous les domaines.

Dans Flash Professional, la spécification de "~~" constitue l’unique façon d’accéder aux fichiers SWF non locaux à partir des fichiers SWF locaux ayant été publiés à l’aide du paramètre Accès au réseau uniquement de l’option Sécurité de lecture locale dans l’outil de création de Flash.

Remarque : la valeur du caractère générique ne fonctionne pas pour les sous-domaines. Par exemple, vous ne pouvez pas utiliser ~~.foo.com pour les paramètres domains. Bien que vous puissiez spécifier un sous-domaine avec une valeur de caractère générique pour un fichier de régulation interdomaines (comme dans ~~.foo.com), vous ne pouvez pas utiliser une valeur de caractère générique de cette manière pour la méthode allowDomain().

Permet aux fichiers SWF et HTML d’accéder aux objets et aux variables du fichier SWF qui procède à l’appel.
Permet aux fichiers SWF figurant dans les domaines identifiés d’accéder aux objets et aux variables du fichier SWF qui contient l’appel à allowDomain().

Remarque : l’appel de cette méthode depuis le code dans le sandbox de l’application AIR émet une exception SecurityError. Le contenu situé hors du domaine de sécurité de l’application ne peut pas effectuer la programmation croisée du contenu dans le sandbox de l’application. Toutefois, le contenu situé hors du sandbox de l’application peut communiquer avec le contenu du sandbox de sécurité de l’application par un pont sandbox.

Si deux fichiers SWF sont servis à partir du même domaine, par exemple, http://mysite.com/swfA.swf et http://mysite.com/swfB.swf, alors swfA.swf peut alors analyser et modifier les variables, les objets, les propriétés, les méthodes, etc. dans swfB.swf et swfB.swf peut faire la même chose pour swfA.swf. Ceci est appelé programmation entre plusieurs animations ou programmation croisée.

Si deux fichiers SWF sont servis à partir de domaines différents, par exemple, http://siteA.com/swfA.swf et http://siteB.com/siteB.swf, puis, par défaut, Flash Player n’autorise pas swfA.swf à créer un script pour swfB.swf, mais pas swfB.swf à créer un script pour swfA.swf. Un fichier SWF autorise les fichiers SWF provenant d’autres domaines en appelant Security.allowDomain(). Ceci s’appelle programmation de scripts interdomaines. En appelant Security.allowDomain("siteA.com"), siteB.swf autorise siteA.swf à créer un script le contrôlant.

Dans tout contexte interdomaines, il est important d’identifier clairement les parties impliquées. Dans le cadre de cette discussion, le côté procédant à la programmation croisée sera appelé partie procédant à l’accès (habituellement le fichier SWF procédant à l’accès) et l’autre côté sera appelé partie cible (généralement le fichier SWF cible). Lorsque siteA.swf crée un script contrôlant siteB.swf, siteA.swf est la partie qui procède à l’accès et siteB.swf la partie réceptrice.

Les autorisations interdomaines établies avec allowDomain() sont asymétriques. Dans l’exemple précédent, siteA.swf peut créer un script contrôlant siteB.swf, mais siteB.swf ne peut pas créer de script de contrôle de siteA.swf, car siteA.swf n’a pas appelé allowDomain() pour donner aux fichiers SWF de siteB.com l’autorisation de créer un script de contrôle. Vous pouvez définir des autorisations symétriques en faisant les deux fichiers SWF appeler allowDomain().

En dehors de la protection des fichiers SWF contre les scripts interdomaines provenant d’autres fichiers SWF, Flash Player protège également les fichiers SWF contre ce type de script provenant des fichiers HTML. La programmation HTML vers SWF peut se produire avec des fonctions anciennes du navigateur telles que SetVariable ou en appelant des fonctions de rappel établies avec ExternalInterface.addCallback(). Lorsque la programmation HTML vers SWF franchit les domaines, le SWF cible doit également appeler allowDomain(), comme s’il avait été appelé par un fichier SWF, faute de quoi l’opération échouera.

La spécification de l’adresse IP en tant que paramètre pour allowDomain() n’autorise pas l’accès de toutes les parties provenant de l’adresse IP spécifiée. Par contre, elle autorise l’accès uniquement par une partie qui contient l’adresse IP spécifiée dans son URL, et non pas un nom de domaine qui renvoie à cette adresse IP.

Différences liées à la version

Les règles de sécurité interdomaines de Flash Player ont évolué de version en version. Le tableau suivant récapitule les différences.

Versions SWF les plus récentes impliquées dans les opérations de programmation croiséeallowDomain() nécessaire ?allowInsecureDomain() nécessaire ?Quel fichier SWF doit appeler allowDomain() ou allowInsecureDomain() ?Qu’est-ce qui peut être spécifié dans allowDomain() ou allowInsecureDomain() ?5 ou plus récenteNonNonS/OS/O6Oui, si les super-domaines ne concordent pasNonLe fichier SWF en cours d’accès ou tout fichier SWF appartenant au même super-domaine que le fichier SWF en cours d’accès.
  • Domaine de type texte (monsite.com)
  • Adresse IP (192.168.1.1)
7Oui, si les domaines ne concordent pas exactementOui, en cas d’accès HTTP vers HTTPS (même si les domaines correspondent exactement)Le fichier SWF en cours d’accès ou tout fichier SWF appartenant exactement au même domaine que le fichier SWF en cours d’accès.
  • Domaine de type texte (monsite.com)
  • Adresse IP (192.168.1.1)
8 ou plus récenteOui, si les domaines ne concordent pas exactementOui, en cas d’accès HTTP vers HTTPS (même si les domaines correspondent exactement)Fichier SWF cible
  • Domaine de type texte (monsite.com)
  • Adresse IP (192.168.1.1)
  • Caractère générique (~~)

Les versions qui contrôlent le comportement de Flash Player désignent les versions SWF (la version publiée d’un fichier SWF), non pas la version de Flash Player. Par exemple, lorsque Flash Player 8 lit un fichier SWF publié par la version 7, il applique un comportement compatible à la version 7. Cette pratique permet de garantir que les mises à jour du lecteur ne changent pas le comportement de Security.allowDomain() dans les fichiers SWF déployés.

La colonne Version du tableau précédent indique la version la plus récente des fichiers SWF lors des opérations de programmation croisée. Le comportement de Flash Player dépend de la version du fichier SWF procédant à l’accès ou du fichier SWF cible, en retenant la version supérieure.

Les paragraphes suivants fournissent de plus amples informations sur les modifications de sécurité de Flash Player impliquant Security.allowDomain().

Version 5. Il n’y a aucune restriction de programmation de scripts interdomaines.

Version 6. Des fonctions de sécurité contre la programmation interdomaines ont été introduites. Par défaut, Flash Player empêche la programmation interdomaines, tandis que Security.allowDomain() l’autorise. Pour déterminer si deux fichiers appartiennent au même domaine, Flash Player utilise le super-domaine de chaque fichier, qui correspond au nom d’hôte exact de l’URL du fichier, moins le premier segment, jusqu’à un minimum de deux segments. Par exemple, le super-domaine de www.mysite.com est mysite.com. Les fichiers SWF de www.mysite.com et store.mysite.com ne peuvent pas se contrôler mutuellement par script sans un appel à Security.allowDomain().

Version 7. Le filtrage de super-domaine est modifié pour obtenir la correspondance exacte des domaines. Deux fichiers ne peuvent se programmer que si les noms d’hôte figurant dans leurs URL sont identiques ; sinon vous devez effectuer un appel à Security.allowDomain(). Par défaut, les fichiers chargés à partir des URL qui ne sont pas de type HTTPS ne sont plus autorisés à programmer les fichiers chargés à partir des URL HTTPS, même si les fichiers sont chargés à partir d’un domaine rigoureusement identique. Cette restriction permet de protéger les fichiers HTTPS, car un fichier non HTTPS est susceptible d’être modifié sans téléchargement, et tout fichier non HTTPS modifié de façon illicite risque de corrompre un fichier HTTPS, qui serait normalement protégé contre ce type de modification. La méthode Security.allowInsecureDomain() a été introduite pour permettre aux fichiers SWF HTTPS en cours d’accès de désactiver de façon volontaire cette restriction. Néanmoins, l’utilisation de Security.allowInsecureDomain() est déconseillée.

Version 8. Il existe deux grands domaines de modification :

  • L’appel de Security.allowDomain() autorise désormais uniquement les opérations de programmation croisée où le fichier SWF cible correspond au fichier SWF qui a appelé Security.allowDomain(). En d’autres termes, tout fichier SWF qui appelle désormais Security.allowDomain() n’autorise que l’accès à lui-même. Dans des versions précédentes, l’appel de Security.allowDomain() autorisait les opérations de programmation croisée lorsque le fichier SWF cible appartenait au même domaine que le fichier SWF qui a appelé Security.allowDomain(). L’appel de Security.allowDomain() ouvrait auparavant l’ensemble du domaine du fichier SWF ayant procédé à l’appel.
  • Une prise en charge a été ajoutée pour les valeurs des caractères génériques avec Security.allowDomain("~~") et Security.allowInsecureDomain("~~"). La valeur caractère générique (~~) autorise les opérations de programmation croisée quel que soit le fichier procédant à l’accès et quelle que soit l’origine de ce dernier. Le caractère générique sert alors d’autorisation globale. Des autorisations génériques sont requises pour activer certains types d’opérations respectant les règles de sécurité des fichiers locaux. De façon plus spécifique, pour qu’un fichier SWF local disposant d’autorisations d’accès réseau pour créer un script de contrôle de fichier SWF sur Internet, le fichier Internet SWF en cours d’accès doit appeler Security.allowDomain("~~"), ce qui indique que l’origine du fichier SWF local est inconnue (si le fichier SWF Internet cible est chargé à partir d’une URL HTTPS, le fichier SWF Internet doit alors appeler Security.allowInsecureDomain("~~")).

De façon exceptionnelle, la situation suivante peut se produire : vous chargez un fichier SWF enfant à partir d’un domaine différent et souhaitez lui permettre de créer un script sur le fichier SWF parent, mais vous ne connaissez pas le domaine final du fichier SWF enfant. Cela peut se produire, par exemple, lorsque vous utilisez des redirections d’équilibrage de charge ou des serveurs tiers.

Dans ce cas, vous pouvez utiliser la propriété url de l’objet URLRequest que vous transmettez à Loader.load(). Par exemple, si vous chargez un fichier SWF dans un fichier SWF parent, vous pouvez accéder à la propriété contentLoaderInfo de l’objet Loader pour le fichier SWF parent :

Security.allowDomain(loader.contentLoaderInfo.url)

Vous devez attendre le début du chargement du fichier SWF enfant pour obtenir la valeur correcte de la propriété url. Pour détecter le début du chargement du fichier SWF, exploite l’événement progress.

La situation opposée peut également se produire ; en effet, vous pouvez créer un fichier SWF enfant sur lequel son fichier parent pourra créer un script, mais qui ignore le domaine de celui-ci. Dans ce cas, vous pouvez accéder à la propriété loaderInfo de l’objet d’affichage qui correspond à l’objet racine du fichier SWF. Dans le fichier SWF enfant, appelez Security.allowDomain( this.root.loaderInfo.loaderURL). Il n’est pas nécessaire d’attendre la fin du chargement du fichier SWF parent ; le parent sera déjà chargé lorsque celui de l’enfant commencera.

Si vous procédez à la publication de Flash Player 8 ou une version ultérieure, vous pouvez également traiter ces situations en appelant Security.allowDomain("~~"). Cependant, il peut parfois s’agir d’un raccourci dangereux, dans la mesure où il autorise tout autre fichier SWF, quel que soit le domaine de ce dernier, à accéder au fichier SWF procédant à l’appel. Il est généralement plus sûr d’utiliser la propriété _url.

Pour plus d’informations concernant la sécurité, voir la rubrique du Pôle de développement Flash Player : Sécurité (disponible en anglais uniquement).

ExternalInterface.addCallback()flash.events.Event.COMPLETEflash.display.DisplayObject.parentflash.net.URLRequest.urlallowInsecureDomain()
allowInsecureDomain Permet aux fichiers SWF et HTML appartenant aux domaines identifiés d’accéder aux objets et variables du fichier SWF effectuant l’appel, hébergé à l’aide du protocole HTTPS.L’appel de cette méthode depuis le code dans le sandbox de sécurité de l’application AIR renvoie une exception SecurityError. Le contenu situé en dehors du sandbox de sécurité de l’application ne peut pas effectuer la programmation croisée du contenu du sandbox de sécurité de l’application. SecurityErrorSecurityErrordomainsUne ou plusieurs chaînes ou objets URLRequest qui nomment les domaines à partir desquels vous souhaitez autoriser l’accès. Vous pouvez spécifier le domaine spécial « ~~ » pour autoriser l’accès à partir de tous les domaines.

La spécification de « ~~ » constitue la seule façon d’accéder aux fichiers SWF non locaux à partir des fichiers SWF locaux qui ont été publiés à l’aide du paramètre Accès au réseau uniquement pour l’option Sécurité de lecture locale (Fichier > Paramètres de publication > onglet Flash) dans l’outil de création de Flash.

Remarque : la valeur du caractère générique ne fonctionne pas pour les sous-domaines. Par exemple, vous ne pouvez pas utiliser ~~.foo.com pour les paramètres domains. Bien que vous puissiez spécifier un sous-domaine avec une valeur de caractère générique pour un fichier de régulation interdomaines (comme dans ~~.foo.com), vous ne pouvez pas utiliser une valeur de caractère générique de cette manière pour la méthode allowInsecureDomain().

Permet aux fichiers SWF et HTML hébergés à l’aide du protocole HTTPS d’accéder aux objets et aux variables du fichier SWF qui procède à l’appel.
Permet aux fichiers SWF et HTML appartenant aux domaines identifiés d’accéder aux objets et variables du fichier SWF appelant, hébergé à l’aide du protocole HTTPS.

Flash Player offre la méthode allowInsecureDomain() pour plus de souplesse, même si l’appel de cette méthode n’est pas recommandé. La transmission d’un fichier par le protocole HTTPS offre plusieurs protections pour vous et vos utilisateurs. Le fait d’appeler allowInsecureDomain affaiblit l’une de ces protections.

Remarque : l’appel de cette méthode depuis le code dans le sandbox de l’application AIR émet une exception SecurityError. Le contenu situé hors du domaine de sécurité de l’application ne peut pas effectuer la programmation croisée du contenu dans le sandbox de l’application. Toutefois, le contenu situé hors du sandbox de l’application peut communiquer avec le contenu du sandbox de sécurité de l’application par un pont sandbox.

Cette méthode fonctionne de la même façon que Security.allowDomain(), mais elle autorise en outre des opérations où la partie qui procède à l’accès est chargée avec un protocole non HTTPS et la partie cible est chargée avec le protocole HTTPS. A partir de la version 7 de Flash Player, les fichiers non HTTPS ne sont pas autorisés à programmer les fichiers HTTPS. La méthode allowInsecureDomain() lève cette restriction lorsque le fichier SWF HTTPS cible l’utilise.

Utilisez allowInsecureDomain() uniquement pour activer la programmation des fichiers non HTTPS vers les fichiers HTTPS. Utilisez cette méthode pour activer le script lorsque le fichier non HTTPS qui procède à l’accès et le fichier HTTPS qui est accédé sont servis à partir du même domaine. Par exemple, si un fichier SWF sur http://mysite.com doit contrôler par script un fichier SWF sur https://mysite.com. N’utilisez pas cette méthode pour activer les scripts de contrôle entre des fichiers non HTTPS, entre fichiers HTTPS ou de fichiers HTTPS vers des fichiers non HTTPS. Dans ces situations, recourez plutôt à allowDomain().

Le scénario suivant illustre la façon dont la méthode allowInsecureDomain(), si elle n’est pas utilisée avec prudence, risque de compromettre la sécurité.

Tenez compte du fait que les informations suivantes constituent uniquement l’un des scénarios possibles et sont conçues pour vous aider à comprendre allowInsecureDomain() par l’intermédiaire d’un exemple réaliste de programmation croisée. Cet exemple ne couvre pas tous les problèmes relatifs à l’architecture de sécurité et doit être utilisé uniquement comme référence générale. Le Pôle de développement Flash Player contient des informations détaillées sur Flash Player et la sécurité. Pour plus d’informations, voir la rubrique du Pôle de développement Flash Player : Sécurité.

Supposons que vous deviez créer un site de commerce électronique qui comprend deux composants : un catalogue, qui ne doit pas nécessairement être sécurisé, dans la mesure où il contient uniquement des informations publiques ; et un composant panier/règlements, qui doit être sécurisé pour protéger les informations financières et personnelles des utilisateurs. Supposons que vous deviez servir le catalogue à partir de http://mysite.com/catalog.swf et le panier à partir de https://mysite.com/cart.swf. Le cahier des charges de votre site exige qu’aucun tiers ne puisse voler les numéros de carte de crédit de votre utilisateur en profitant des faiblesses de votre architecture de sécurité.

Imaginons qu’un intermédiaire malveillant tente d’intervenir entre le serveur et vos utilisateurs pour s’emparer des numéros de carte de crédit que vos utilisateurs pénètrent dans votre application de panier. L’intermédiaire, peut être un FAI peu scrupuleux, par exemple, ou un administrateur malveillant travaillant dans la même entreprise que certains utilisateurs, ou de façon plus générale, toute personne ayant la possibilité d’afficher ou modifier les paquets réseau transmis sans protection sur Internet, entre vos utilisateurs et vos serveurs. Cette situation n’est pas rare.

Si cart.swf utilise HTTPS pour transmettre les informations bancaires aux serveurs, l’intermédiaire ne peut pas voler directement ces informations en détournant les paquets réseau, dans la mesure où la transmission HTTPS est chiffrée. Cependant, l’attaquant utilise une autre technique : modifier le contenu de l’un de vos fichiers SWF pendant sa remise à l’utilisateur, en remplaçant le fichier SWF par une version modifiée qui détourne les informations relatives à l’utilisateur vers un autre serveur.

Le protocole HTTPS, entre autres, empêche l’application de cette « modification », dans la mesure où non seulement les transmissions HTTPS sont chiffrées mais encore protégées contre les modifications. Si un intermédiaire tente de modifier un paquet, le récepteur détecte la modification et refuse le paquet. Ainsi, l’attaquant ne peut pas modifier cart.swf, dans la mesure où il est transmis par l’intermédiaire du protocole HTTPS.

Supposons maintenant que vous souhaitiez autoriser les boutons dans catalog.swf, servi par le protocole HTTP, pour ajouter des éléments au panier dans cart.swf, servi par le protocole HTTPS. Pour accomplir ceci, cart.swf appelle allowInsecureDomain(), ce qui autorise catalog.swf à créer un script de contrôle pour cart.swf. Cette action entraîne une conséquence non intentionnelle : un attaquant pourrait modifier catalog.swf lorsqu’il est téléchargé par l’utilisateur, car catalog.swf est transmis avec le protocole HTTP et n’offre aucune protection contre les modifications. Le fichier catalog.swf modifié par l’attaquant peut désormais programmer cart.swf, dans la mesure où cart.swf contient un appel à allowInsecureDomain(). Le fichier catalog.swf modifié peut utiliser ActionScript pour accéder aux variables de cart.swf et lire ainsi les informations sur les cartes bancaires et autres données sensibles. Le fichier catalog.swf peut ensuite envoyer ces données au serveur d’un attaquant.

Naturellement, cette implémentation n’est pas souhaitable, mais vous devez autoriser la programmation croisée entre les deux fichiers SWF de votre site. Voici deux façons de changer la conception de ce site virtuel d’e-commerce afin d’éviter allowInsecureDomain() :

  • Servez tous les fichiers SWF de l’application avec le protocole HTTPS. Il s’agit de la solution la plus simple et la plus fiable. Dans le scénario décrit, vous pouvez servir les fichiers catalog.swf et cart.swf par l’intermédiaire du protocole HTTPS. Vous risquez de consommer un peu plus de bande passante et d’augmenter la charge du processeur du serveur en faisant basculer un fichier tel que catalog.swf du protocole HTTP au protocole HTTPS, ce qui se traduira par une légère augmentation du temps de chargement des applications au niveau de l’utilisateur. Vous devez faire des essais avec des serveurs réels pour déterminer la gravité de ces effets. De manière générale, elle reste cantonnée entre 10 et 20 % et est parfois totalement absente. Vous pouvez généralement améliorer les résultats avec du matériel et des logiciels d’accélération HTTPS sur vos serveurs. L’un des principaux avantage de l’application du protocole HTTPS aux fichiers SWF qui doivent coopérer est que vous pouvez utiliser une URL HTTPS en tant qu’URL principale dans le navigateur de l’utilisateur sans générer d’avertissements de contenu mixtes à partir du navigateur. En outre, l’icône en forme de cadenas devient visible dans le navigateur, ce qui permet d’offrir aux utilisateurs un indicateur de sécurité reconnu.
  • Utilisez la programmation HTTPS vers HTTP, et non pas HTTP vers HTTPS. Dans le scénario proposé, vous pouvez stocker le contenu du panier de l’utilisateur dans catalog.swf, puis utiliser cart.swf pour gérer le processus de règlement. Lors du règlement, cart.swf pourrait extraire le contenu du panier à partir des variables ActionScript de catalog.swf. La restriction concernant les scripts HTTP vers HTTPS est asymétrique, bien qu’un fichier catalog.swf livré par le protocole HTTP ne puisse pas être autorisé à contrôler par script un fichier cart.swf livré par HTTPS, le fichier cart.swf HTTPS peut créer un script de contrôle du fichier catalog.swf HTTP. Cette approche est plus délicate que l’approche intégralement HTTPS ; vous ne devez pas faire confiance aux fichiers SWF transmis avec le protocole HTTP, qui n’est pas protégé contre les modifications. Par exemple, lorsque cart.swf extrait la variable ActionScript qui décrit le contenu du panier, le code ActionScript de cart.swf ne peut pas être certain que la valeur de cette variable est au format attendu. Vous devez vous assurer que le panier ne contient pas de données non valides qui risquent d’entraîner une action imprévue de cart.swf. Vous devez également accepter le risque qu’un intermédiaire, en modifiant catalog.swf, fournisse des données valides mais inexactes à cart.swf, par exemple en plaçant des éléments dans le caddie de l’utilisateur. La procédure normale de règlement permet d’atténuer ce risque, sans toutefois l’écarter totalement, en affichant le contenu du caddie et le montant total pour approbation par l’utilisateur.

Les navigateurs Web appliquent la séparation des fichiers HTTPS et non HTTPS depuis de nombreuses années et le scénario ci-dessus illustre l’utilité de cette restriction. Flash Player permet de contourner cette restriction de sécurité lorsque c’est strictement nécessaire, mais analysez les conséquences avant d’y procéder.

Pour plus d’informations concernant la sécurité, voir la rubrique du Pôle de développement Flash Player : Sécurité (disponible en anglais uniquement).

allowDomain()
loadPolicyFile Recherche un fichier de régulation à l’emplacement spécifié par le paramètre url.urlStringEmplacement de l’URL du fichier de régulation à charger. Recherche un fichier de régulation à l’emplacement spécifié par le paramètre url. Recherche un fichier de régulation à l’emplacement spécifié par le paramètre url. Adobe AIR et Flash Player utilisent des fichiers de régulation pour déterminer s’ils autorisent des applications à charger des données depuis des serveurs autres que celui sur lequel elles se trouvent. Notez que même si la méthode se nomme loadPolicyFile(), le fichier n’est pas chargé tant qu’une requête réseau impliquant un fichier de régulation n’est pas créée.

Avec Security.loadPolicyFile(), Flash Player ou AIR peut charger les fichiers de régulation à partir d’emplacements aléatoires, comme l’illustre l’exemple suivant :

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

De cette manière, Flash Player ou AIR tente de récupérer un fichier de régulation à partir de l’URL spécifiée. Les autorisations accordées par l’intermédiaire du fichier de régulation s’appliquent à l’ensemble du contenu, au même niveau ou à un niveau inférieur dans la hiérarchie virtuelle des répertoires du serveur.

Par exemple, selon le code précédent, ces lignes ne renvoient pas d’exception :

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);

Par contre, le code suivant renvoie une exception de sécurité :

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

Vous pouvez utiliser loadPolicyFile() pour charger un nombre illimité de fichiers de régulation. Dans le cas d’une requête impliquant un fichier de régulation, Flash Player ou AIR attend que le téléchargement des fichiers de régulation soit terminé avant de rejeter une requête. En dernier recours, si aucun des fichiers de régulation spécifiés par loadPolicyFile() n’autorise la requête, Flash Player ou AIR consulte les emplacements d’origine par défaut.

Lorsqu’il recherche un fichier de régulation maître,. Flash Player attend une réponse du serveur pendant trois secondes. En l’absence d’une réponse, l’application considère qu’il n’existe pas de fichier de régulation maître. Toutefois, si aucune valeur de dépassement de délai par défaut est définie pour les appels à loadPolicyFile(), Flash Player suppose que le fichier appelé existe et attend aussi longtemps que nécessaire pour le charger. Pour avoir la certitude qu’un fichier de régulation maître est chargé, appelez-le donc explicitement par le biais de loadPolicyFile().

Vous ne pouvez pas vous connecter aux ports généralement réservés. Pour obtenir une liste complète des ports bloqués, voir la rubrique « Restriction des API de réseau » dans le Guide du développeur d’ActionScript 3.0.

L’utilisation du protocole xmlsocket avec un numéro de port spécifique permet de récupérer directement les fichiers de régulation depuis un serveur XMLSocket, comme l’illustre l’exemple suivant : Les connexions de socket ne sont pas soumises aux restrictions de ports réservés décrites ci-dessus.

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

De cette manière, Flash Player ou AIR peut récupérer un fichier de régulation au niveau du port et de l’hôte spécifiés. Lors de la connexion au port spécifié, Flash Player ou AIR transmet <policy-file-request />, suivi d’un octet de terminaison null. Le serveur doit renvoyer un octet null à la fin du fichier de régulation avant de fermer la connexion. Si le serveur ne ferme pas la connexion, Flash Player ou AIR y met fin après avoir reçu l’octet de terminaison null.

Vous pouvez éviter qu’un fichier SWF utilise cette méthode en définissant le paramètre allowNetworking des balises object et embed dans la page HTML qui héberge le contenu SWF.

Pour plus d’informations concernant la sécurité, voir la rubrique du Pôle de développement Flash Player : Sécurité (disponible en anglais uniquement).

showSettings Affiche le panneau Paramètres de sécurité de Flash Player.panelStringdefaultUne valeur de la classe SecurityPanel qui permet de spécifier le panneau Paramètres de sécurité à afficher. Si vous omettez ce paramètre, SecurityPanel.DEFAULT est utilisé. Affiche le panneau Paramètres de sécurité de Flash Player. Cette méthode ne s’applique pas au contenu dans Adobe AIR ; son appel dans une application AIR n’a aucun effet. SecurityPanelAPPLICATION Le fichier est exécuté dans une application AIR, et a été installé avec le package (le fichier AIR) pour cette application.applicationString Le fichier est exécuté dans une application AIR, et a été installé avec le package (le fichier AIR) pour cette application. Ce contenu est inclus dans le répertoire des ressources de l’application AIR (où le contenu de l’application est installé). sandboxTypeREMOTELOCAL_WITH_FILELOCAL_WITH_NETWORKLOCAL_TRUSTEDLOCAL_TRUSTED Ce fichier est un fichier local qui a été approuvé par l’utilisateur en utilisant soit le gestionnaire de paramètres de Flash Player, soit un fichier de configuration FlashPlayerTrust.localTrustedString Ce fichier est un fichier local qui a été approuvé par l’utilisateur en utilisant soit le gestionnaire de paramètres de Flash Player, soit un fichier de configuration FlashPlayerTrust. Ce fichier peut aussi bien lire à partir de sources locales de données que communiquer avec Internet. sandboxTypeREMOTELOCAL_WITH_FILELOCAL_WITH_NETWORKAPPLICATIONLOCAL_WITH_FILE Le fichier est un fichier local qui n’a pas été approuvé par l’utilisateur, et il ne s’agit pas d’un fichier SWF publié avec une désignation de mise en réseau.localWithFileString Le fichier est un fichier local qui n’a pas été approuvé par l’utilisateur, et il ne s’agit pas d’un fichier SWF publié avec une désignation de mise en réseau. Dans Adobe AIR, le fichier local n’est pas dans le répertoire des ressources de l’application ; ce type de fichier est placé dans le sandbox de sécurité de l’application. Ce fichier peut lire à partir de sources locales de données mais ne peut pas communiquer avec Internet. sandboxTypeREMOTELOCAL_WITH_NETWORKLOCAL_TRUSTEDAPPLICATIONLOCAL_WITH_NETWORK Le fichier est un fichier local qui n’a pas été approuvé par l’utilisateur, et il s’agit d’un fichier SWF publié avec une désignation de mise en réseau.localWithNetworkString Le fichier est un fichier local qui n’a pas été approuvé par l’utilisateur, et il s’agit d’un fichier SWF publié avec une désignation de mise en réseau. Le fichier peut communiquer sur Internet mais ne peut pas lire à partir de sources de données locales. sandboxTypeREMOTELOCAL_WITH_FILELOCAL_TRUSTEDAPPLICATIONREMOTE Ce fichier provient d’une URL et fonctionne selon les règles basées sur le domaine du sandbox.remoteString Ce fichier provient d’une URL et fonctionne selon les règles basées sur le domaine du sandbox. sandboxTypeLOCAL_WITH_FILELOCAL_WITH_NETWORKLOCAL_TRUSTEDAPPLICATIONexactSettings Détermine la façon dont Flash Player ou AIR sélectionne le domaine à utiliser pour certains paramètres de contenu, ce qui couvre les autorisations relatives à la caméra et au microphone, les quotas de stockage et le stockage d’objets persistants partagés.BooleanFlash Player ou AIR a déjà utilisé la valeur de exactSettings au moins une fois pour déterminer les paramètres du lecteur. SecurityErrorSecurityError Détermine la façon dont Flash Player ou AIR sélectionne le domaine à utiliser pour certains paramètres de contenu, ce qui couvre les autorisations relatives à la caméra et au microphone, les quotas de stockage et le stockage d’objets persistants partagés. Afin que le fichier SWF utilise les mêmes paramètres que dans Flash Player 6, définissez exactSettings sur false.

Dans Flash Player 6, le domaine utilisé pour ces paramètres de lecteur était basé sur la partie finale du domaine du fichier SWF. Lorsque le domaine d’un fichier SWF inclut plus de deux segments, tels que www.exemple.com, le premier segment du domaine (« www ») est supprimé et la partie restante du domaine est utilisée : exemple.com. Ainsi, dans Flash Player 6, www.exemple.com et magasin.exemple.com ont en commun le domaine « example.com » pour ces paramètres. de même, www.exemple.co.fr et magasin.exemple.co.fr ont tous les deux recours au domaine exemple.co.fr pour ces paramètres. A compter de Flash Player 7, les paramètres du lecteur sont choisis par défaut en fonction d’un domaine exact de fichier SWF. Par exemple, le fichier SWF de www.exemple.com applique les paramètres du lecteur pour www.exemple.com, et le fichier SWF de magasin.exemple.com utiliserait des paramètres différents pour magasin.exemple.com.

Lorsque la propriété Security.exactSettings est définie sur true, Flash Player ou AIR a recours à des domaines exacts pour les paramètres du lecteur. La valeur par défaut de la propriété exactSettings est false. Si vous modifiez la valeur par défaut de la propriété exactSettings, faites-le avant que tout événement impliquant la sélection de paramètres de la part de Flash ou d’AIR ne se produise, tel que l’utilisation d’une caméra ou d’un microphone, ou l’extraction d’un objet partagé persistant.

Si vous avez déjà publié un fichier SWF de version 6 et créé des objets persistants à partir de ce dernier, et si vous devez extraire ces objets partagés persistants à partir de ce fichier SWF après l’avoir porté vers la version 7 ou plus récente (ou à partir d’un autre fichier SWF de version 7 ou plus récente), vous devez définir Security.exactSettings sur false avant d’appeler SharedObject.getLocal().

pageDomain Obtient le domaine de la page contenant le fichier swf.String Obtient le domaine de la page contenant le fichier swf. Pour des raisons de sécurité, la méthode ne renvoie pas l’adresse URL complète, mais uniquement le domaine de la page, notamment http://www.exemple.com. sandboxType Indique le type de sandbox de sécurité dans lequel fonctionne le fichier appelant.String Indique le type de sandbox de sécurité dans lequel fonctionne le fichier appelant.

Security.sandboxType a l’une des valeurs suivantes :

  • remote (Security.REMOTE) —  Ce fichier provient d’une URL Internet et fonctionne selon des règles de sandbox basées sur le domaine.
  • localWithFile (Security.LOCAL_WITH_FILE) — Ce fichier est un fichier local qui n’a pas été approuvé par l’utilisateur, et il ne s’agit pas d’un fichier SWF publié avec une désignation de mise en réseau. Ce fichier peut lire à partir de sources locales de données mais ne peut pas communiquer avec Internet.
  • localWithNetwork (Security.LOCAL_WITH_NETWORK) — Ce fichier SWF est un fichier local qui n’a pas été approuvé par l’utilisateur, et a été publié avec la désignation de mise en réseau. Le fichier SWF peut communiquer sur Internet mais ne peut pas lire à partir de sources de données locales.
  • localTrusted (Security.LOCAL_TRUSTED) — Ce fichier est un fichier local qui a été approuvé par l’utilisateur en utilisant soit le gestionnaire de paramètres de Flash Player, soit un fichier de configuration FlashPlayerTrust. Ce fichier peut aussi bien lire à partir de sources locales de données que communiquer avec Internet.
  • application (Security.APPLICATION) — Ce fichier est exécuté dans une application AIR, et a été installé avec le package (le fichier AIR) pour cette application. Par défaut, les fichiers dans le sandbox de sécurité de l’application AIR peuvent effectuer la programmation croisée de n’importe quel fichier issu de n’importe quel domaine (alors que les fichiers situés en dehors du sandbox de sécurité de l’application AIR peuvent ne pas être autorisés à effectuer la programmation croisée du fichier AIR). Par défaut, les fichiers du sandbox de sécurité de l’application AIR peuvent charger le contenu et les données de n’importe quel domaine.

Pour plus d’informations concernant la sécurité, voir la rubrique du Pôle de développement Flash Player : Sécurité (disponible en anglais uniquement).

REMOTELOCAL_WITH_FILELOCAL_WITH_NETWORKLOCAL_TRUSTEDAPPLICATION
LoaderContext La classe LoaderContext fournit des options pour le chargement des fichiers SWF et autres médias à l’aide de la classe Loader.Object La classe LoaderContext fournit des options pour le chargement des fichiers SWF et autres médias à l’aide de la classe Loader. La classe LoaderContext est utilisée en tant que paramètre de context dans les méthodes load() et loadBytes() de la classe Loader.

Lors du chargement des fichiers SWF avec la méthode Loader.load(), vous devez prendre deux décisions : dans quel domaine de sécurité le fichier SWF doit-il être placé et dans quel domaine d’application au sein de ce domaine de sécurité ? Pour plus de détails sur ces choix, voir les sections des propriétés applicationDomain et securityDomain.

Lors du chargement d’un fichier SWF avec la méthode Loader.loadBytes(), vous devez effectuer le même choix de domaine d’application comme pour Loader.load(), mais il n’est pas nécessaire de spécifier un domaine de sécurité, dans la mesure où Loader.loadBytes() place toujours le fichier SWF qui est chargé dans le domaine de sécurité du fichier SWF en cours de chargement.

Lors du chargement des images (JPEG, GIF ou PNG) et non pas de fichiers SWF, il n’est pas nécessaire de spécifier un domaine de sécurité ou un domaine d’application, dans la mesure où ces concepts n’ont de sens que pour les fichiers SWF. Par contre, une seule décision est nécessaire : avez-vous besoin d’un accès programmé aux pixels de l’image chargée ? Dans l’affirmative, voir la propriété checkPolicyFile. Si vous souhaitez appliquer le dégroupage lors du chargement d’une image, utilisez la classe JPEGLoaderContext plutôt que la classe LoaderContext.

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 Crée un objet LoaderContext avec les paramètres spécifiés.checkPolicyFileBooleanfalseSpécifie s’il est nécessaire de vérifier l’existence d’un fichier de régulation d’URL avant le chargement de l’objet. applicationDomainflash.system:ApplicationDomainnullSpécifie l’objet ApplicationDomain à utiliser pour un objet Loader. securityDomainflash.system:SecurityDomainnullSpécifie l’objet SecurityDomain à utiliser pour un objet Loader.

Remarque : le contenu du sandbox de sécurité de l’application air ne peut pas charger le contenu d’autres sandboxes dans son SecurityDomain.

Crée un objet LoaderContext avec les paramètres spécifiés. Pour compléter les détails de ces paramètres, voir les descriptions des propriétés de cette classe.
flash.display.Loader.load()flash.display.Loader.loadBytes()flash.system.ApplicationDomainflash.system.SecurityDomain
allowCodeImport Indique si vous pouvez utiliser un objet Loader en vue d’importer du contenu avec du code exécutable, tel qu’un fichier SWF, dans le sandbox de sécurité de l’appelant.Boolean Indique si vous pouvez utiliser un objet Loader en vue d’importer du contenu avec du code exécutable, tel qu’un fichier SWF, dans le sandbox de sécurité de l’appelant. Il existe deux opérations d’importation : la méthode Loader.loadBytes() et la méthode Loader.load() avec LoaderContext.securityDomain = SecurityDomain.currentDomain. (La dernière opération n’est pas prise en charge dans le sandbox de l’application AIR.) Lorsque la propriété allowCodeImport est définie sur false, ces opérations d’importation sont limitées à des opérations sécurisées, telles que le chargement d’images. Le chargement normal de fichiers SWF non importés avec la méthode Loader.load() n’est pas affecté par la valeur de cette propriété.

Cette propriété est utile lorsque vous souhaitez importer le contenu de l’image dans le sandbox, notamment lorsque vous souhaitez répliquer ou traiter une image à partir d’un autre domaine, mais ne souhaitez pas prendre le risque de recevoir un fichier SWF alors que vous n’attendiez qu’un fichier d’image. Etant donné que les fichiers SWF peuvent contenir du code ActionScript, l’importation d’un fichier SWF est une opération beaucoup plus risquée que l’importation d’un fichier image.

Dans le contenu AIR dans le sandbox de l’application, la valeur par défaut est false. Dans le contenu hors application (qui inclut la totalité du contenu dans Flash Player), la valeur par défaut est true.

La propriété allowCodeImport a été ajoutée à Flash Player 10.1 et AIR 2.0. Toutefois, cette propriété est disponible pour les fichiers SWF et les applications AIR de toutes les versions lorsque le moteur d’exécution de Flash la prend en charge.

flash.display.Loader.loadBytes()flash.display.Loader.load()securityDomain
applicationDomain Spécifie le domaine d’application à utiliser pour la méthode Loader.load() ou Loader.loadBytes().nullflash.system:ApplicationDomain Spécifie le domaine d’application à utiliser pour la méthode Loader.load() ou Loader.loadBytes(). Utilisez cette propriété uniquement lors du chargement d’un fichier SWF écrit dans ActionScript 3.0 (et non pas une image ou un fichier SWF écrit au format ActionScript 1.0 ou ActionScript 2.0).

Tout domaine de sécurité est divisé en un ou plusieurs domaines d’application, représentés par les objets ApplicationDomain. Les domaines d’application n’ont pas de rôle de sécurité ; ils servent à gérer les unités de code ActionScript qui doivent coopérer. Si vous chargez un fichier SWF provenant d’un autre domaine, puis autorisez son placement dans un domaine de sécurité distinct, vous ne pouvez pas contrôler le domaine d’application dans lequel le ficher SWF est placé. Si vous avez spécifié un domaine d’application, ce choix sera ignoré. Cependant, si vous chargez un fichier SWF dans votre propre domaine de sécurité, soit parce que le fichier SWF provient de votre domaine, soit parce que vous l’importez dans votre domaine de sécurité, puis vous pouvez contrôler le domaine d’application du fichier SWF chargé.

Vous devez transmettre le domaine d’application à partir de votre propre domaine de sécurité dans LoaderContext.applicationDomain. Toute tentative de transmission d’un domaine d’application à partir de tout autre domaine de sécurité renvoie une exception SecurityError.

Vous disposez de quatre choix concernant le type de propriété ApplicationDomain à utiliser :

  • Enfant du domaine d’application du chargeur. La valeur par défaut. Vous pouvez représenter de façon explicite ce choix avec la syntaxe new ApplicationDomain(ApplicationDomain.currentDomain). Ceci permet au fichier SWF d’utiliser les classes parent de façon directe, par exemple en écrivant new MyClassDefinedInParent(). Le parent, cependant, ne permet pas d’utiliser cette syntaxe. Si le parent souhaite utiliser les classes de l’enfant, il doit appeler ApplicationDomain.getDefinition() pour les extraire. L’avantage de ce choix est que, si l’enfant définit une classe du même nom que la classe qui est déjà définie par le parent, aucune erreur ne se produit ; l’enfant hérite simplement de la définition de cette classe à partir de son parent et toute définition de l’enfant qui entraîne un conflit reste inutilisée, sauf si l’enfant ou le parent appelle la méthode ApplicationDomain.getDefinition() pour l’extraire.
  • Domaine d’application de la classe loader. Employez ce domaine d’application lorsque vous utilisez ApplicationDomain.currentDomain. Une fois le chargement terminé, le parent et l’enfant peuvent exploiter leurs classes respectives de façon directe. Si l’enfant tente de définir une classe avec le même nom que celle déjà définie par le parent, la classe du parent est utilisée et celle de l’enfant est ignorée.
  • Enfant du domaine d’application du système. Utilisez ce domaine d’application lors de l’utilisation de new ApplicationDomain(null). Cette opération permet de distinguer les objets de chargement des objets chargés, afin de définir des versions distinctes des classes du même nom, sans conflit ou problèmes de priorité. Seule la méthode ApplicationDomain.getDefinition() permet aux deux parties de voir les classes de l’autre.
  • Enfant d’un autre domaine d’application. De façon occasionnelle, vous pouvez avoir à faire à une hiérarchie de domaines d’application plus complexe. Vous pouvez charger un fichier SWF dans un domaine d’application à partir de votre propre domaine de sécurité. Par exemple, new ApplicationDomain(ApplicationDomain.currentDomain.parentDomain.parentDomain) charge un fichier SWF dans un nouvel enfant du grand-parent du domaine actuel.

Une fois le chargement terminé, les deux parties (en cours de chargement ou chargées) peuvent avoir à rechercher leur propre domaine d’application, ou le domaine d’application de l’autre partie, afin d’appeler ApplicationDomain.getDefinition(). Chaque partie peut extraire une référence vers son propre domaine d’application à l’aide de ApplicationDomain.currentDomain. Le fichier SWF de chargement peut extraire une référence au domaine d’application du fichier SWF à l’aide de Loader.contentLoaderInfo.applicationDomain. Si le fichier SWF a identifié son mode de chargement, il peut retrouver l’objet ApplicationDomain du fichier SWF en cours de chargement. Par exemple, si l’enfant a été chargé à l’aide de la méthode par défaut, il peut déterminer le domaine d’application du fichier SWF à l’aide de ApplicationDomain.currentDomain.parentDomain.

Pour plus d’informations, voir la section « Classe ApplicationDomain » du chapitre « Environnement du système client » du Guide du développeur d’ActionScript 3.0.

flash.display.Loader.load()flash.display.Loader.loadBytes()flash.system.ApplicationDomain
checkPolicyFile Spécifie si l’application doit tenter de télécharger un fichier de régulation d’URL à partir du serveur de l’objet chargé avant de commencer à charger ce dernier.falseBoolean Spécifie si l’application doit tenter de télécharger un fichier de régulation d’URL à partir du serveur de l’objet chargé avant de commencer à charger ce dernier. Cet indicateur s’applique à la méthode Loader.load(), mais pas à la méthode Loader.loadBytes().

Définissez cet indicateur sur true lorsque vous chargez une image (JPEG, GIF ou PNG) en dehors du domaine du fichier SWF qui procède à l’appel et lorsque vous pensez avoir besoin d’accéder au contenu de cette image à partir d’ActionScript. Parmi les exemples d’accès au contenu de l’image, citons le référencement de la propriété Loader.content pour obtenir un objet Bitmap et l’appel à la méthode BitmapData.draw() pour obtenir une copie des pixels de l’image chargée. Si vous tentez l’une de ces opérations sans avoir spécifié checkPolicyFile lors du chargement, vous risquez de subir une exception SecurityError dans la mesure où le fichier de régulation requis n’a pas encore été téléchargé.

Lorsque vous appelez la méthode Loader.load() avec LoaderContext.checkPolicyFile défini sur true, l’application ne commence pas le téléchargement de l’objet spécifié dans URLRequest.url avant d’avoir téléchargé avec succès un fichier de régulation d’URL adéquat ou déterminé que ce fichier de régulation n’existe pas. Flash Player ou AIR analyse en premier lieu les fichiers de régulation ayant déjà été téléchargés, tente de télécharger tous les fichiers de stratégie en attente spécifiés lors des appels à la méthode Security.loadPolicyFile(), puis tente de télécharger un fichier de stratégie à l’emplacement par défaut, qui correspond à URLRequest.url, soit /crossdomain.xml sur le même serveur que URLRequest.url. Dans tous les cas, le fichier de régulation donné doit exister à URLRequest.url, sur la base de l’emplacement du fichier de régulation, et le fichier doit autoriser l’accès par le biais d’une ou plusieurs balises <allow-access-from>.

Si vous définissez checkPolicyFile sur true, le téléchargement principal spécifié dans la méthode Loader.load() ne charge pas tant que le traitement du fichier de régulation n’est pas complètement terminé. Par conséquent, tant que le fichier de régulation requis existe, dès la réception des événements ProgressEvent.PROGRESS ou Event.COMPLETE à partir de la propriété contentLoaderInfo de votre objet Loader, le téléchargement du fichier de régulation se termine et vous pouvez procéder de façon sûre aux opérations qui nécessitent ce fichier de régulation.

Si vous définissez checkPolicyFile sur true et si aucun fichier de régulation n’est trouvé, vous ne recevrez aucune indication d’erreur jusqu’à ce que vous tentiez une opération qui renvoie une exception SecurityError. Cependant, lorsque l’objet LoaderInfo distribue un événement ProgressEvent.PROGRESS ou Event.COMPLETE, vous pouvez déterminer si un fichier de régulation a été détecté en vérifiant la valeur de la propriété LoaderInfo.childAllowsParent.

Si l’accès au niveau des pixels de l’image en cours de chargement est requis, vous ne pouvez pas définir la propriété checkPolicyFile sur true. La vérification d’un fichier de stratégie dans ce cas est contre-productive, dans la mesure où elle risque de retarder le début de votre téléchargement et risque de consommer la bande passante du réseau de façon inutile.

Evitez également de définir checkPolicyFile sur true si vous utilisez la méthode Loader.load() pour télécharger un fichier SWF. Ceci est dû au fait que les autorisations SWF vers SWF ne sont pas contrôlées par les fichiers de stratégies, mais par la méthode Security.allowDomain(), ce qui a pour conséquence que checkPolicyFile n’a pas d’effet lorsque vous chargez le fichier SWF. La vérification d’un fichier de stratégie dans ce cas est contre-productive, dans la mesure où elle risque de retarder le téléchargement du fichier SWF et risque de consommer la bande passante du réseau de façon inutile (Flash Player ou AIR ne peut pas déterminer si votre téléchargement principal sera un fichier SWF ou une image, dans la mesure où le téléchargement du fichier de régulation a lieu avant le téléchargement principal).

Si vous téléchargez un objet à partir d’une URL qui peut utiliser des redirections HTTP côté serveur, servez-vous de checkPolicyFile avec précaution. Les fichiers de régulation sont toujours récupérés de l’URL initiale correspondante que vous spécifiez dans URLRequest.url. Si l’objet final provient d’une URL différente en conséquence de redirections HTTP, les fichiers de régulation initialement téléchargés peuvent ne pas être applicables à l’URL finale de l’objet, autrement dit l’URL à prendre en compte dans les décisions relatives à la sécurité. Si vous vous trouvez dans cette situation, le code examine la valeur LoaderInfo.url après avoir reçu un événement ProgressEvent.PROGRESS ou Event.COMPLETE, ce qui permet d’obtenir l’URL finale de l’objet. La méthode Security.loadPolicyFile() est ensuite appelée avec une URL de fichier de régulation basée sur l’URL finale de l’objet. La valeur de LoaderInfo.childAllowsParent est ensuite vérifiée régulièrement jusqu’à ce qu’elle ait la valeur true.

Il n’est pas nécessaire que vous définissiez cette propriété pour le contenu AIR s’exécutant dans le sandbox de l’application. Le contenu dans le sandbox de l’application AIR peut appeler la méthode BitmapData.draw() à l’aide de l’une des images chargées comme source.

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 Indique s’il convient de décoder les données image lors de leur utilisation ou de leur chargement.String Indique s’il convient de décoder les données image lors de leur utilisation ou de leur chargement.

Sous la stratégie par défaut, ImageDecodingPolicy.ON_DEMAND, le moteur d’exécution décode les données image lorsque les données sont nécessaires à des fins d’affichage ou à d’autres fins. Cette stratégie conserve le comportement de décodage utilisé par les versions précédentes du moteur d’exécution.

Sous la stratégie ImageDecodingPolicy.ON_LOAD, le moteur d’exécution décode l’image immédiatement après son chargement et avant la distribution de l’événement complete. Décoder les images au chargement et non à la demande peut améliorer les performances de l’animation et de l’interface utilisateur lorsque plusieurs images chargées s’affichent en succession rapide (liste de défilement ou contrôle du flux). Néanmoins, l’utilisation indiscriminée de la stratégie onLoad peut augmenter le niveau de consommation de mémoire de votre application. Un plus grand nombre de données image risque en effet d’être en mémoire au même moment, ce qui n’est pas le cas pour la stratégie onDemand.

Quelle que soit la stratégie choisie, le moteur d’exécution utilise la même mémoire cache et le même comportement de purge une fois l’image décodée. Le moteur d’exécution peut à tout moment abandonner le décodage et redécoder l’image dès que cela est nécessaire.

flash.system.ImageDecodingPolicy
parameters Objet contenant les paramètres à transmettre à l’objet LoaderInfo du contenu.Object Objet contenant les paramètres à transmettre à l’objet LoaderInfo du contenu.

Normalement, la valeur de la propriété contentLoaderInfo.parameters est obtenue en analysant l’URL de demande. Si la variable parameters est définie, la propriété contentLoaderInfo.parameters obtient sa valeur à partir de l’objet LoaderContext, et non à partir de l’URL de demande. La variable parameters prend en charge uniquement les objets contenant des paires de chaînes nom/valeur similaires aux paramètres de l’URL. Si l’objet ne contient pas de paires de chaînes nom/valeur, une erreur IllegalOperationError est renvoyée.

Le but de cette API est d’activer le fichier SWF de chargement pour transférer ses paramètres à un fichier SWF chargé. Cette fonctionnalité est particulièrement utile lorsque vous utilisez la méthode loadBytes(), car LoadBytes ne permet pas la transmission de paramètres via l’URL. Il est uniquement possible de transmettre correctement les paramètres à un autre fichier SWF AS3 ; un fichier SWF AS1 ou AS2 ne peut pas recevoir les paramètres dans une forme accessible, bien que l’objet loaderInfo.parameters AS3 d’AVM1Movie soit l’objet transféré.

Considérons par exemple l’URL qui suit :

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

Le code suivant utilise la propriété LoaderContext.parameters pour reproduire un paramètre transmis à cette URL :

      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);
     

Pour vérifier que le paramètre a été correctement transmis, utilisez l’instruction trace suivante après avoir exécuté ce code :

trace(loaderInfo.parameters.foo);

Si le contenu est chargé correctement, cette trace imprime "bar".

requestedContentParent Parent auquel l’objet Loader va tenter d’ajouter le contenu chargé.flash.display:DisplayObjectContainer Parent auquel l’objet Loader va tenter d’ajouter le contenu chargé.

Lorsque le contenu est entièrement chargé, l’objet Loader devient normalement le parent du contenu. Si la propriété requestedContentParent est définie, l’objet qu’elle spécifie devient le parent, à moins qu’une erreur d’exécution empêche l’affectation. Il est également possible d’effectuer ce changement de parent après l’événement complete sans utiliser cette propriété. Indiquer le parent avec LoaderContext.requestedContentParent permet toutefois d’éliminer les événements supplémentaires.

LoaderContext.requestedContentParent définit le parent désiré avant l’exécution des scripts de la première image dans le contenu chargé et après l’exécution du constructeur. Si la propriété requestedContentParent est définie sur null (valeur par défaut), l’objet Loader devient le parent du contenu.

Si le contenu chargé est un objet AVM1Movie, ou si une erreur est renvoyée lorsque addChild() est appelée sur l’objet requestedContentParent, les actions suivantes se produisent :

  • L’objet Loader devient le parent du contenu chargé.
  • Le moteur d’exécution distribue un événement AsyncErrorEvent.

Si le parent demandé et le contenu chargé se trouvent dans des sandbox de sécurité différents, et si le parent demandé n’a pas accès au contenu chargé, les actions suivantes se produisent :

  • L’objet Loader devient le parent du contenu chargé.
  • Le moteur d’exécution distribue un événement SecurityErrorEvent.

Le code suivant utilise requestedContentParent pour placer le contenu chargé dans un objet Sprite :

      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);
     

Lors de l’exécution de ce code, le fichier SWF enfant s’affiche sur la scène. Ce fait confirme que l’objet Sprite que vous venez d’ajouter à la scène est le parent du fichier child.swf chargé.

securityDomain Spécifie le domaine de sécurité à utiliser pour une opération Loader.load().nullflash.system:SecurityDomain Spécifie le domaine de sécurité à utiliser pour une opération Loader.load(). Utilisez cette propriété uniquement lors du chargement d’un fichier SWF (et non pas une image).

Le choix du domaine de sécurité n’a de sens que si vous chargez un fichier SWF pouvant provenir d’un autre domaine (un autre serveur) que le fichier SWF de chargement. Lorsque vous chargez un fichier SWF provenant de votre propre domaine, ce dernier est placé dans votre domaine de sécurité. Cependant, lorsque vous chargez un fichier SWF à partir d’un domaine différent, vous disposez de deux options. Vous pouvez autoriser le placement du fichier SWF chargé dans le domaine de sécurité « naturel », qui est différent de celui du fichier SWF de chargement. Il s’agit de la valeur par défaut. L’autre consiste à spécifier que vous souhaitez placer le fichier SWF chargé dans le même domaine de sécurité que le fichier SWF de chargement, en définissant myLoaderContext.securityDomain comme égal à SecurityDomain.currentDomain. Cette opération est appelée chargement en vue de l’importation et est équivalente, pour des raisons de sécurité, à la copie du fichier SWF chargé sur votre propre serveur et à son chargement à partir de cet endroit. Pour que le chargement en vue de l’importation réussisse, le serveur du fichier SWF doit disposer d’un fichier de régulation pour lequel le domaine de chargement du fichier SWF fait partie des domaines de confiance.

Vous pouvez transmettre votre propre domaine de sécurité uniquement dans LoaderContext.securityDomain. Toute tentative de transmission vers un autre domaine de sécurité renvoie une exception SecurityError.

Le contenu du sandbox de sécurité de l’application AIR ne peut pas charger le contenu d’autres sandbox dans son domaine de sécurité.

Pour plus d’informations, voir le chapitre « Sécurité » du Guide du développeur d’ActionScript 3.0.

flash.display.Loader.load()flash.system.SecurityDomain
allowLoadBytesCodeExecution Propriété héritée, remplacée par allowCodeImport, mais toujours prise en charge pour des raisons de compatibilité.Boolean Propriété héritée, remplacée par allowCodeImport, mais toujours prise en charge pour des raisons de compatibilité. Auparavant, la seule opération affectée par allowLoadBytesCodeExecution était la méthode Loader.loadBytes() ; à partir de Flash Player 10.1 et AIR 2.0, l’opération d’importation/chargement de Loader.load() avec LoaderContext.securityDomain = SecurityDomain.currentDomain est également affectée. (La dernière opération n’est pas prise en charge dans le sandbox de l’application AIR.) A cause de ce double effet, le nom de la propriété allowLoadBytesCodeExecution était trop spécifique. Par conséquent, on lui préfère à présent le nom allowCodeImport. Que vous définissiez allowCodeImport ou allowLoadBytesCodeExecution, les deux valeurs en sont affectées.

Indique si vous pouvez utiliser un objet Loader en vue d’importer du contenu avec du code exécutable, tel qu’un fichier SWF, dans le sandbox de sécurité de l’appelant. Si cette propriété est définie sur false, ces opérations d’importation sont limitées à des opérations sécurisées, telles que le chargement d’images.

Dans le contenu AIR dans le sandbox de l’application, la valeur par défaut est false. Dans le contenu hors application, la valeur par défaut est true.

flash.display.Loader.loadBytes()
JPEGLoaderContext La classe JPEGLoaderContext comprend une propriété permettant d’activer un filtre de dégroupage lors du chargement d’une image JPEG.flash.system:LoaderContext La classe JPEGLoaderContext comprend une propriété permettant d’activer un filtre de dégroupage lors du chargement d’une image JPEG. Le filtre de dégroupage améliore la qualité d’une image avec des paramètres de compression plus élevés en lissant les pixels voisins. Pour appliquer le dégroupage lors du chargement d’une image JPEG, créez un objet JPEGLoaderContext, puis définissez la propriété deblockingFilter. Utilisez ensuite le nom d’objet JPEGLoaderContext en tant que valeur du paramètre context de la méthode load() de l’objet Loader utilisée pour charger l’image.

La classe JPEGLoaderContext étend la classe LoaderContext. Définissez la propriété checkPolicyFile sur true si vous devez accéder par programmation aux pixels de l’image chargée (par exemple, si vous utilisez la méthode BitmapData.draw). La définition de la propriété checkPolicyFile n’est pas nécessaire pour le contenu AIR s’exécutant dans le sandbox de l’application.

flash.display.Loader.load()flash.display.BitmapData.draw()JPEGLoaderContext Crée un objet JPEGLoaderContext avec les paramètres spécifiés.deblockingFilterNumber0.0Spécifie la puissance du filtre de dégroupage. La valeur 1.0 applique un filtre de dégroupage puissant ; la valeur 0.0 désactive le filtre de dégroupage. checkPolicyFileBooleanfalseIndique si Flash Player doit vérifier l’existence d’un fichier de régulation d’URL avant le chargement de l’objet. Ne s’applique pas pour le contenu d’AIR s’exécutant dans le sandbox de l’application. applicationDomainflash.system:ApplicationDomainnullSpécifie l’objet ApplicationDomain à utiliser pour un objet Loader. securityDomainflash.system:SecurityDomainnullSpécifie l’objet SecurityDomain à utiliser pour un objet Loader. Crée un objet JPEGLoaderContext avec les paramètres spécifiés. flash.system.LoaderContextflash.display.Loader.load()flash.display.Loader.loadBytes()flash.system.ApplicationDomainflash.system.SecurityDomaindeblockingFilter Spécifie la puissance du filtre de dégroupage. 0.0Number Spécifie la puissance du filtre de dégroupage. La valeur 1.0 applique un filtre de dégroupage puissant ; la valeur 0.0 désactive le filtre de dégroupage.
Capabilities La classe Capabilities fournit des propriétés qui décrivent le système et le moteur d’exécution qui hébergent l’application.Object La classe Capabilities fournit des propriétés qui décrivent le système et le moteur d’exécution qui hébergent l’application. Par exemple, l’écran d’un téléphone portable peut être de 100 pixels carrés et en noir et blanc, alors qu’un écran d’ordinateur peut être de 1 000 pixels carrés et en couleurs. Si vous utilisez la classe Capabilities pour déterminer les fonctionnalités dont dispose le client, vous pouvez fournir le contenu approprié à autant d’utilisateurs que possible. Lorsque vous connaissez les fonctionnalités du périphérique, vous pouvez demander au serveur d’envoyer les fichiers SWF ou demander au fichier SWF de modifier sa présentation.

Toutefois, certaines fonctionnalités d’Adobe AIR ne sont pas répertoriés comme propriétés de la classe Capabilities. Il s’agit de propriétés d’autres classes :

PropriétéDescriptionNativeApplication.supportsDockIconIndique si le système d’exploitation prend en charge les icônes d’application dans le Dock.NativeApplication.supportsMenuIndique si le système d’exploitation prend en charge une barre de menus d’application globale.NativeApplication.supportsSystemTrayIconIndique si le système d’exploitation prend en charge les icônes de la barre d’état système.NativeWindow.supportsMenuIndique si le système d’exploitation prend en charge les menus de fenêtre. NativeWindow.supportsTransparencyIndique si le système d’exploitation prend en charge les fenêtres transparentes.

N’utilisez pas les classes Capabilities.os ou Capabilities.manufacturer pour déterminer une fonctionnalité en fonction du système d’exploitation. Fonder une fonctionnalité sur le système d’exploitation est une mauvaise idée, car cela peut engendrer des problèmes si une application ne prend pas en compte tous les systèmes d’exploitation cible potentiels. En revanche, vous pouvez utiliser la propriété qui correspond à la fonctionnalité pour laquelle vous effectuez le test.

Vous pouvez envoyer des informations sur les capacités, qui sont stockées dans la propriété Capabilities.serverString en tant que chaîne codée au format URL, à l’aide de la méthode HTTP GET ou POST. L’exemple suivant présente une chaîne serveur pour un ordinateur prenant en charge le format MP3 et disposant d’une résolution de 1 600 x 1 200 pixels, qui exécute Windows XP et où un IME est installé :

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

Le tableau suivant dresse la liste des propriétés de la classe Capabilities et des chaînes serveur correspondantes : Propriété de la classe CapabilitiesChaîne serveuravHardwareDisableAVDhasAccessibilityACChasAudioAhasAudioEncoderAEhasEmbeddedVideoEVhasIMEIMEhasMP3MP3hasPrintingPRhasScreenBroadcastSBhasScreenPlaybackSPhasStreamingAudioSAhasStreamingVideoSVhasTLSTLShasVideoEncoderVEisDebuggerDEBlanguageLlocalFileReadDisableLFDmanufacturerMmaxLevelIDCMLosOSpixelAspectRatioARplayerTypePTscreenColorCOLscreenDPIDPscreenResolutionXRscreenResolutionYRversionV

Il existe également une chaîne de serveur WD qui indique si lz mode sans fenêtre est désactivé. Le mode sans fenêtre peut être désactivé dans Flash Player en raison d’incompatibilité avec le navigateur Web ou d’un paramètre utilisateur dans le fichier mms.cfg. Il n’existe pas de propriété Capabilities équivalente.

Toutes les propriétés de la classe Capabilities sont accessibles en lecture seule.

L’exemple suivant renvoie les valeurs détectées dans l’objet flash.system.Capabilities. Il renvoie tout d’abord les valeurs dans un champ de texte. Ensuite, il renvoie les valeurs au moyen de plusieurs appels de la méthode trace(). 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 Spécifie si l’accès à la caméra et au microphone de l’utilisateur a été interdit (true) ou autorisé (false) par l’administrateur.Boolean Spécifie si l’accès à la caméra et au microphone de l’utilisateur a été interdit (true) ou autorisé (false) par l’administrateur. La chaîne serveur est AVD.

Pour le contenu dans Adobe AIR™, cette propriété s’applique uniquement au contenu des sandboxes de sécurité autres que le sandbox de sécurité de l’application. Le contenu du sandbox de sécurité de l’application peut toujours accéder au microphone et à la caméra de l’utilisateur.

flash.media.Camera.getCamera()flash.media.Microphone.getMicrophone()Security.showSettings()
cpuArchitecture Spécifie l’architecture de l’unité centrale de traitement (CPU) actuelle.String Spécifie l’architecture de l’unité centrale de traitement (CPU) actuelle. La propriété cpuArchitecture peut renvoyer les chaînes suivantes : PowerPC, x86, SPARC et ARM. La chaîne serveur est ARCH. hasAccessibility Spécifie si le système prend en charge (true) ou non (false) la communication avec des aides d’accessibilité.Boolean Spécifie si le système prend en charge (true) ou non (false) la communication avec des aides d’accessibilité. La chaîne serveur est ACC. flash.accessibility.Accessibility.activeflash.accessibility.Accessibility.updateProperties()hasAudioEncoder Spécifie si le système peut (true) ou ne peut pas (false) coder un flux audio continu, en provenance d’un microphone par exemple.Boolean Spécifie si le système peut (true) ou ne peut pas (false) coder un flux audio continu, en provenance d’un microphone par exemple. La chaîne serveur est AE. hasAudio Spécifie si le système est doté de fonctionnalités audio.Boolean Spécifie si le système est doté de fonctionnalités audio. Cette propriété est toujours définie sur true. La chaîne serveur est A. hasEmbeddedVideo Spécifie si le système prend en charge (true) ou non (false) la vidéo incorporée.Boolean Spécifie si le système prend en charge (true) ou non (false) la vidéo incorporée. La chaîne serveur est EV. hasIME Spécifie si un IME est installé (true) ou non (false) sur le système.Boolean Spécifie si un IME est installé (true) ou non (false) sur le système. La chaîne serveur est IME. flash.system.IMEflash.system.System.imehasMP3 Spécifie si le système est équipé (true) ou non (false) d’un décodeur MP3.Boolean Spécifie si le système est équipé (true) ou non (false) d’un décodeur MP3. La chaîne serveur est MP3. hasPrinting Spécifie si le système prend en charge (true) ou non (false) l’impression.Boolean Spécifie si le système prend en charge (true) ou non (false) l’impression. La chaîne serveur est PR. hasScreenBroadcast Spécifie si le système prend en charge (true) ou non (false) le développement d’applications de diffusion à l’écran avec Flash Media Server.Boolean Spécifie si le système prend en charge (true) ou non (false) le développement d’applications de diffusion à l’écran avec Flash Media Server. La chaîne serveur est SB. hasScreenPlayback Spécifie si le système prend en charge (true) ou non (false) la lecture d’applications de diffusion à l’écran avec Flash Media Server.Boolean Spécifie si le système prend en charge (true) ou non (false) la lecture d’applications de diffusion à l’écran avec Flash Media Server. La chaîne serveur est SP. hasStreamingAudio Spécifie si le système peut (true) ou ne peut pas (false) lire des données audio en diffusion continue.Boolean Spécifie si le système peut (true) ou ne peut pas (false) lire des données audio en diffusion continue. La chaîne serveur est SA. hasStreamingVideo Spécifie si le système peut (true) ou ne peut pas (false) lire des données vidéo en diffusion continue.Boolean Spécifie si le système peut (true) ou ne peut pas (false) lire des données vidéo en diffusion continue. La chaîne serveur est SV. hasTLS Spécifie si le système prend en charge les sockets SSL natifs via NetConnection (true) ou non (false).Boolean Spécifie si le système prend en charge les sockets SSL natifs via NetConnection (true) ou non (false). La chaîne serveur est TLS. flash.net.NetConnection.connectedProxyTypeflash.net.NetConnection.proxyTypeflash.net.NetConnection.usingTLShasVideoEncoder Spécifie si le système peut (true) ou ne peut pas (false) coder un flux vidéo continu, en provenance d’une caméra Web par exemple.Boolean Spécifie si le système peut (true) ou ne peut pas (false) coder un flux vidéo continu, en provenance d’une caméra Web par exemple. La chaîne serveur est VE. isDebugger Spécifie si le système est une version débogueur (true) ou une version officielle (false).Boolean Spécifie si le système est une version débogueur (true) ou une version officielle (false). La chaîne serveur est DEB. Cette propriété est définie sur true lorsqu’elle est exécutée dans la version débogueur de Flash Player ou l’application de débogage du lanceur AIR. isEmbeddedInAcrobat Indique si le moteur d’exécution de Flash est intégré dans un fichier PDF ouvert dans Acrobat 9.0 ou version ultérieure (true) ou non (false).Boolean Indique si le moteur d’exécution de Flash est intégré dans un fichier PDF ouvert dans Acrobat 9.0 ou version ultérieure (true) ou non (false). languages Tableau de chaînes contenant des informations sur les langues de l’interface utilisateur que l’utilisateur préfère, telles que définies dans le système d’exploitation.Array Tableau de chaînes contenant des informations sur les langues de l’interface utilisateur que l’utilisateur préfère, telles que définies dans le système d’exploitation. Les chaînes contiennent des balises de langue (et des informations de zone et de script, le cas échéant) définies par RFC4646 (http://www.ietf.org/rfc/rfc4646.txt) et utilisent le tiret comme séparateur (par exemple, "en-US" ou "ja-JP"). Les langues apparaissent dans le tableau par ordre de préférence, tel que déterminé par les paramètres du système d’exploitation.

Les informations régionales renvoyées dans les chaînes de paramètres régionaux varient en fonction des systèmes d’exploitation. Un système d’exploitation peut renvoyer "fr-fr", alors qu’un autre renvoyer simplement "fr".

La première entrée du tableau renvoyé possède généralement le même identifiant de langue principale que la propriété Capabilities.language. Par exemple, si Capabilities.languages[0] est définie sur "en-US", la propriété language est définie sur "en". Toutefois, si la propriété Capabilities.language est définie sur "xu" (spécifiant une langue inconnue), le premier élément de ce tableau diffère. Pour cette raison, la propriété Capabilities.languages[0] est en général plus précise que la propriété Capabilities.language.

La chaîne serveur est LS.

language Spécifie le code de langue du système sur lequel s’exécute le contenu.String Spécifie le code de langue du système sur lequel s’exécute le contenu. La langue est spécifiée sous forme de code de langue à deux lettres minuscules conformément à ISO 639-1. Pour le Chinois, un code de pays à deux lettres majuscules, conformément à ISO 3166, permet de faire la distinction entre le Chinois traditionnel et le Chinois simplifié. Les codes de langue reposent sur les noms anglais de langue : par exemple, hu correspond au Hongrois (Hungarian).

Sur les systèmes en anglais, cette propriété renvoie uniquement le code de langue (en) et non pas le code du pays. Sur les systèmes Microsoft Windows, cette propriété renvoie la langue de l’interface utilisateur (UI), qui se rapporte à la langue utilisée pour les menus, boîtes de dialogue, messages d’erreur et fichiers d’aide. Le tableau suivant présente les valeurs possibles : LangueValeurTchèquecsDanoisdaNéerlandaisnlAnglaisfrFinnoisfiFrançaisfrAllemanddeHongroishuItalienitJaponaisjaCoréenkoNorvégiennoAutre/inconnuxuPolonaisplPortugaisptRusseruChinois simplifiézh-CNEspagnolesSuédoissvChinois traditionnelzh-TWTurctr

Remarque : la valeur de la propriété Capabilities.language est limitée aux valeurs possibles de cette liste. Du fait de cette restriction, les applications Adobe AIR doivent utiliser le premier élément du tableau Capabilities.languages pour connaître la langue d’interface utilisateur principale du système.

La chaîne serveur est L.

Dans l’exemple suivant, le contenu qui s’affiche dépend de la langue du système d’exploitation de l’utilisateur.

La propriété Capabilities.language renvoie le code de langue ISO 639-1 (dans l’exemple, « en » pour l’anglais). L’instruction switch vérifie le code de langue et définit le contenu du champ de texte myTextField sur un message d’accueil propre à la langue. Si le code de langue n’est pas pris en charge par l’exemple, la chaîne d’erreur par défaut est renvoyée.

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); } } }
langues
localFileReadDisable Spécifie si l’accès en lecture au disque dur de l’utilisateur a été interdit (true) ou autorisé (false) par l’administrateur.Boolean Spécifie si l’accès en lecture au disque dur de l’utilisateur a été interdit (true) ou autorisé (false) par l’administrateur. Pour le contenu dans Adobe AIR, cette propriété s’applique uniquement au contenu des sandboxes de sécurité autres que le sandbox de sécurité de l’application (le contenu dans le sandbox de sécurité de l’application peut toujours lire à partir du système de fichiers). Si la propriété est définie sur true, Flash Player ne peut pas lire de fichiers (y compris le premier fichier de démarrage de Flash Player) sur le disque dur de l’utilisateur. Si cette propriété est définie sur true, le contenu AIR situé en dehors du sandbox de sécurité de l’application ne peut pas lire de fichiers sur le disque dur de l’utilisateur. Par exemple, toute tentative de lecture d’un fichier sur le disque dur de l’utilisateur à l’aide des méthodes de chargement échoue si cette propriété est définie sur true.

La lecture de bibliothèques partagées à l’exécution est également bloquée si cette propriété est définie sur true ; en revanche, la lecture d’objets partagés localement est autorisée, indépendamment de la valeur de cette propriété.

La chaîne serveur est LFD.

flash.display.Loader
manufacturer Spécifie le fabricant de la version active de Flash Player ou du moteur d’exécution AIR, au format « Adobe OSName ».String Spécifie le fabricant de la version active de Flash Player ou du moteur d’exécution AIR, au format "Adobe OSName". La valeur de NomSE peut être "Windows", "Macintosh", "Linux" ou tout autre nom de système d’exploitation. La chaîne serveur est M.

N’utilisez pas la classe Capabilities.manufacturer pour déterminer une fonctionnalité en fonction du système d’exploitation si une propriété de fonctionnalité plus spécifique existe. Fonder une fonctionnalité sur le système d’exploitation est une mauvaise idée, car cela peut engendrer des problèmes si une application ne prend pas en compte tous les systèmes d’exploitation cible potentiels. En revanche, vous pouvez utiliser la propriété qui correspond à la fonctionnalité pour laquelle vous effectuez le test. Pour plus d’informations, voir la description de la classe Capabilities.

maxLevelIDC Récupère le plus haut niveau IDC H.264 pris en charge par matériel du client.String Récupère le plus haut niveau IDC H.264 pris en charge par matériel du client. L’exécution des fichiers multimédia à ce niveau est garantie. Toutefois, il est possible que leur qualité ne soit pas optimale s’ils sont exécutés au niveau le plus élevé. Cette propriété est utile pour les serveurs qui tentent de cibler les capacités d’un client. Grâce à cette propriété, un serveur peut déterminer le niveau de vidéo à envoyer au client.

La chaîne serveur est ML.

os Spécifie le système d’exploitation actuel.String Spécifie le système d’exploitation actuel. La propriété os peut renvoyer les chaînes suivantes : Système d’exploitationValeurWindows 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" (où X.Y.Z correspond au numéro de version, par exemple : "Mac OS 10.5.2")Linux"Linux" (Flash Player associe la version Linux, telle que "Linux 2.6.15-1.2054_FC5smp".iPhone OS 4.1"iPhone3,1"

La chaîne serveur est OS.

N’utilisez pas la classe Capabilities.os pour déterminer une fonctionnalité en fonction du système d’exploitation si une propriété de fonctionnalité plus spécifique existe. Fonder une fonctionnalité sur le système d’exploitation est une mauvaise idée, car cela peut engendrer des problèmes si une application ne prend pas en compte tous les systèmes d’exploitation cible potentiels. En revanche, vous pouvez utiliser la propriété qui correspond à la fonctionnalité pour laquelle vous effectuez le test. Pour plus d’informations, voir la description de la classe Capabilities.

pixelAspectRatio Indique le format de l’écran, en pixels.Number Indique le format de l’écran, en pixels. La chaîne serveur est AR. playerType Spécifie le type d’environnement d’exécution.String Spécifie le type d’environnement d’exécution. Cette propriété peut avoir l’une des valeurs suivantes :
  • "ActiveX" pour le contrôle ActiveX de Flash Player utilisé par Microsoft Internet Explorer
  • "Desktop" pour le moteur d’exécution Adobe AIR (sauf pour le contenu SWF chargé par une page HTML, ayant Capabilities.playerType réglé sur "PlugIn")
  • "External" pour le lecteur Flash Player autonome ou en mode test
  • "PlugIn" pour le module du navigateur Flash Player (et pour le contenu SWF chargé par une page HTML dans une application AIR)
  • "StandAlone" pour le lecteur Flash Player autonome.

La chaîne serveur est PT.

screenColor Permet de spécifier la couleur de l’écran.String Permet de spécifier la couleur de l’écran. Cette propriété peut avoir la valeur "color", "gray" (pour niveaux de gris) ou "bw" (pour le noir et blanc). La chaîne serveur est COL. screenDPI Spécifie la résolution en points par pouce (dpi) de l’écran, en pixels.Number Spécifie la résolution en points par pouce (dpi) de l’écran, en pixels. La chaîne serveur est DP. screenResolutionX Spécifie la résolution horizontale maximale de l’écran.Number Spécifie la résolution horizontale maximale de l’écran. La chaîne serveur est R (qui renvoie la largeur et la hauteur de l’écran). Cette propriété n’est pas mise à jour avec une résolution d’écran utilisateur mais indique uniquement la résolution au moment du démarrage de Flash Player ou d’une application Adobe AIR. De plus, la valeur spécifie uniquement l’écran principal. screenResolutionY Spécifie la résolution verticale maximale de l’écran.Number Spécifie la résolution verticale maximale de l’écran. La chaîne serveur est R (qui renvoie la largeur et la hauteur de l’écran). Cette propriété n’est pas mise à jour avec une résolution d’écran utilisateur mais indique uniquement la résolution au moment du démarrage de Flash Player ou d’une application Adobe AIR. De plus, la valeur spécifie uniquement l’écran principal. L'exemple suivant est un test simple qui indique la résolution actuelle de l'écran et la version du système d'exploitation. Lors du test de cet exemple, cliquez sur la zone de texte pour afficher les valeurs de la propriété : 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 Chaîne codée au format URL qui spécifie des valeurs pour chaque propriété Capabilities.String Chaîne codée au format URL qui spécifie des valeurs pour chaque propriété Capabilities.

L’exemple suivant illustre une chaîne de code URL :

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 Indique si le système prend en charge l’exécution des traitements 32 bits. Boolean Indique si le système prend en charge l’exécution des traitements 32 bits. La chaîne serveur est PR32. supports64BitProcesses Indique si le système prend en charge l’exécution des traitements 64 bits.Boolean Indique si le système prend en charge l’exécution des traitements 64 bits. La chaîne serveur est PR64. touchscreenType Spécifie le type d’écran tactile pris en charge, le cas échéant.String Spécifie le type d’écran tactile pris en charge, le cas échéant. Les valeurs sont définies dans la classe flash.system.TouchscreenType. L'exemple suivant est un test simple qui indique le type actuel de l'écran tactile. Lors du test de cet exemple, cliquez sur une zone de texte pour afficher les valeurs de la propriété : 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; } Classe TouchscreenTypeflash.ui.Mouse.supportsCursorversion Indique les informations de version et de plateforme de Flash Player ou Adobe&#xAE; AIR&#xAE;.String Indique les informations de version et de plateforme de Flash Player ou Adobe® AIR®. Le format du numéro de version est : platform majorVersion, minorVersion, buildNumber, internalBuildNumber. Les valeurs valides pour la propriété platform sont les suivantes : "WIN", "MAC", "LNX" et "AND". Vous trouverez ci-dessous quelques exemples d’informations sur la version :
	 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
	 

N’utilisez pas la classe Capabilities.version pour déterminer une fonctionnalité en fonction du système d’exploitation si une propriété de fonctionnalité plus spécifique existe. Fonder une fonctionnalité sur le système d’exploitation est une mauvaise idée, car cela peut engendrer des problèmes si une application ne prend pas en compte tous les systèmes d’exploitation cible potentiels. En revanche, vous pouvez utiliser la propriété qui correspond à la fonctionnalité pour laquelle vous effectuez le test. Pour plus d’informations, voir la description de la classe Capabilities.

La chaîne serveur est V.

L'exemple suivant est un test simple qui indique la résolution actuelle de l'écran et la version du système d'exploitation. Lors du test de cet exemple, cliquez sur la zone de texte pour afficher les valeurs de la propriété : 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 Permet au fichier SWF de communiquer avec Flash Player ou le programme hébergeant Flash Player, tel qu’un navigateur Web.Si la fonction n’est pas appelée en réponse à l’action d’un utilisateur, notamment à un événement de type clic de souris ou pression de touche. ErrorErrorcommandStringChaîne transmise à l’application hôte ou commande passée à Flash Player. argsStringChaîne transmise à l’application hôte ou valeur passée à Flash Player. Permet au fichier SWF de communiquer avec Flash Player ou le programme hébergeant Flash Player, tel qu’un navigateur Web. La fonction fscommand() permet également de transmettre des messages à Director ou à Visual Basic (VB), Visual C++ et autres programmes ayant recours aux contrôles ActiveX.

La fonction fscommand() permet à un fichier SWF de communiquer avec un script dans une page Web. Cependant, l’accès au script est contrôlé par le paramètre allowScriptAccess de la page Web (vous définissez cet attribut dans le code HTML intégré au fichier SWF, par exemple dans la balise PARAM pour Internet Explorer ou dans la balise EMBED pour Netscape).

  • Lorsque allowScriptAccessest défini sur "sameDomain" (par défaut), les scripts sont uniquement autorisés à partir des fichiers SWF qui se trouvent dans le même domaine que la page Web.
  • Lorsque allowScriptAccess est défini sur "always", le fichier SWF peut communiquer avec la page HTML dans laquelle il est intégré, même s’il ne provient pas du même domaine que la page HTML.
  • Lorsque l’attribut allowScriptAccess est défini sur "never", le fichier SWF ne peut communiquer avec aucune page HTML. Notez que l’utilisation de cette valeur est déconseillée, voire inutile si vous n’envoyez pas de fichiers SWF non approuvés depuis votre propre domaine. Si vous devez envoyer des fichiers SWF non approuvés, Adobe vous conseille de créer un sous-domaine distinct et d’y placer l’ensemble du contenu non approuvé.

Vous pouvez empêcher un fichier SWF d’utiliser cette méthode en définissant le paramètre allowNetworking des balises object et embed dans la page HTML qui comporte le contenu SWF.

La fonction fscommand() n’est pas autorisée si le fichier SWF appelant se trouve dans le système de fichiers local ou dans le Sandbox du réseau local et si la page HTML contenant ce fichier se trouve dans un Sandbox non approuvé.

Pour plus d’informations concernant la sécurité, voir la rubrique du Pôle de développement Flash Player : Sécurité (disponible en anglais uniquement).

Usage 1 : pour utiliser fscommand() afin d’envoyer un message à Flash Player, vous devez utiliser les commandes et les paramètres prédéfinis. Le tableau suivant indique les valeurs que vous pouvez spécifier pour les paramètres command et args de la fonction fscommand(). Ces valeurs contrôlent les fichiers SWF lus par Flash Player, y compris les projections (une projection est un fichier SWF enregistré sous un format permettant de l’exécuter en tant qu’application autonome, pouvant être lue sans Flash Player).

CommandeParameter (args)RôlequitAucunFerme la projection.fullscreentrue ou falseSpécifiez true pour exécuter Flash Player en mode plein écran. Spécifiez false pour rétablir le mode d’affichage normal du menu.allowscaletrue ou falseSi vous spécifiez false, le lecteur affiche toujours la taille d’origine du fichier SWF, sans le redimensionner. Si vous spécifiez true, le fichier SWF adopte l’échelle 100 % du lecteur.showmenutrue ou falseSpécifiez true pour activer le jeu complet d’éléments de menu contextuel. Spécifiez false pour masquer tous les éléments de menu contextuel, à l’exception de A propos de Flash Player et Paramètres.execChemin de l’application Exécute une application depuis la projection.trapallkeystrue ou falseSpécifiez true pour envoyer tous les événements de touche, y compris les touches de raccourci, au gestionnaire onClipEvent(keyDown/keyUp) de Flash Player.

Toutes les commandes qui figurent dans le tableau ne sont pas disponibles dans toutes les applications :

  • Aucune des commandes n’est disponible dans les lecteurs Web.
  • Toutes les commandes sont disponibles dans les applications de projecteur autonome.
  • Les applications AIR doivent utiliser la classe flash.desktop.NativeApplication pour les fonctions similaires telles que NativeApplication.nativeApplication.exit() au lieu de fscommand("quit").
  • Seuls allowscale et exec sont disponibles sur les lecteurs de tests d’animation.

La commande exec ne peut contenir que les caractères compris entre A et Z, a et z, 0 et 9, les caractères point (.) et souligné (_). La commande exec ne s’exécute que dans le sous-répertoire fscommand. En d’autres termes, si vous utilisez la commande exec pour appeler une application, cette application doit résider dans un sous-répertoire appelé fscommand. La commande exec ne fonctionne qu’à partir d’un fichier de projection Flash.

Usage 2 : pour utiliser fscommand() pour envoyer un message à un langage de programmation tel que JavaScript dans un navigateur Web, vous pouvez transmettre deux paramètres avec les paramètres command et args. Ces paramètres peuvent être des chaînes ou des expressions. Ils sont utilisés dans une fonction JavaScript qui gère ou intercepte la fonction fscommand().

Dans un navigateur Web, la fonction fscommand() appelle la fonction JavaScript moviename_DoFScommand, résidant dans la page Web qui contient le fichier SWF. Pour moviename, attribuez le nom de l’objet Flash utilisé pour l’attribut NAME de la balise EMBED ou la propriété ID de la balise OBJECT. Si vous attribuez le nom « myMovie » au fichier SWF, la fonction JavaScript myMovie_DoFScommand est appelée.

Dans la page Web qui contient le fichier SWF, définissez l’attribut allowScriptAccess de manière à autoriser, ou non, le fichier SWF à accéder à la page Web, selon les descriptions ci-dessus (vous définissez cet attribut dans le code HTML intégré au fichier SWF, par exemple dans la balise PARAM pour Internet Explorer ou dans la balise EMBED pour Netscape).

Dans Flash Player versions 10 et ultérieures s’exécutant dans un navigateur, il est possible que vous ne puissiez pas utiliser cette méthode par programmation pour ouvrir une fenêtre contextuelle. Certains navigateurs (et configurations de navigateur) peuvent bloquer les fenêtres contextuelles ; il n’est donc pas possible de garantir l’ouverture de toutes les fenêtres contextuelles. Toutefois, pour un résultat optimal, utilisez cette méthode pour ouvrir une fenêtre contextuelle uniquement dans le code qui s’exécute comme conséquence directe de l’action d’un utilisateur (par exemple, un événement de type clic de souris ou pression de touche).

Usage 3 : la fonction fscommand() peut envoyer des messages à Director (Macromedia Director d’Adobe). Ces messages sont interprétés par Lingo (le langage de script de Director) comme des chaînes, des événements ou un code Lingo exécutable. Si le message est une chaîne ou un événement, vous devez écrire le code Lingo devant recevoir le message de la fonction fscommand() et exécuter une action dans Director. Pour plus d’informations, voir le centre de support de Director à l’adresse www.adobe.com/support/director/.

Usage 4 : dans VisualBasic, Visual C++ et dans d’autres programmes ayant recours aux contrôles ActiveX, la fonction fscommand() envoie un événement VB avec deux chaînes qui peut être traité dans le langage de programmation de l’environnement. Pour plus d’informations, utilisez les mots-clés « méthode Flash » pour effectuer une recherche dans le centre de support de Flash à l’adresse www.adobe.com/fr/support/flash/.

Remarque : la classe ExternalInterface offre de meilleures fonctionnalités de communication entre JavaScript et ActionScript (Utilisation 2), et entre ActionScript et VisualBasic, Visual C++ ou d’autres programmes pouvant héberger des contrôles ActiveX (Utilisation 4). Vous devriez continuer à utiliser la fonction fscommand() pour envoyer des messages à Flash Player (Utilisation 1) et à Director (Utilisation 3).

L’exemple suivant indique comment fscommand() peut être utilisé pour forcer Flash Player à activer le mode plein écran et bloquer toute tentative de redimensionnement. Un cadre orange est ensuite ajouté à la scène à l’aide de draw(). Dans draw(), un écouteur de l’événement click est ajouté sous le nom clickHandler(), qui répond aux événements click en forçant Flash Player à se fermer en effectuant un autre appel à fscommand().

Remarque : cet exemple doit être exécuté avec la version autonome de Flash Player et non pas dans un navigateur Web.

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 La classe IME permet de manipuler directement l’éditeur de méthode d’entrée (IME) de l’application d’un moteur d’exécution de Flash qui s’exécute sur un ordinateur client.Permet de manipuler l’éditeur de méthodes d’entrée (IME) du système d’exploitation. flash.events:EventDispatcher La classe IME permet de manipuler directement l’éditeur de méthode d’entrée (IME) de l’application d’un moteur d’exécution de Flash qui s’exécute sur un ordinateur client. Vous pouvez déterminer si un IME est installé, qu’il soit activé ou non, et quel IME est activé. Vous pouvez désactiver ou activer l’IME dans l’application et exécuter d’autres fonctions limitées, selon votre système d’exploitation.

Prise en charge du profil AIR : cette fonctionnalité est prise en charge sur les systèmes d’exploitation de bureau, mais ne l’est pas sur tous les périphériques mobiles. Elle est également prise en charge sur les périphériques AIR pour TV. Vous pouvez tester la prise en charge lors de l’exécution à l’aide de la propriété IME.isSupported. Voir Prise en charge du profil AIR pour plus d’informations sur la prise en charge de l’API dans plusieurs profils.

Les IME permettent aux utilisateurs de taper des caractères de texte non ASCII multioctet pour les langues orientales, tels que le Chinois, le Japonais et le Coréen. Pour plus d’informations sur la manipulation des IME, voir la documentation du système d’exploitation pour lequel vous développez des applications. Les sites Web suivants comportent des ressources supplémentaires :

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

Si aucun IME n’est actif sur l’ordinateur de l’utilisateur, tout appel aux méthodes ou propriétés IME, autres que Capabilities.hasIME, échoue. Lorsque vous activez manuellement un IME, les appels ActionScript suivants aux méthodes et aux propriétés IME fonctionnent comme prévu. Par exemple, si vous utilisez un IME japonais, ce dernier doit être activé avant tout appel à la méthode ou la propriété IME.

Le tableau ci-après, indique les plates-formes prises en charge par cette classe :

FonctionWindowsMac OSXLinuxDétermine si l’IME est installé : Capabilities.hasIMEOuiOuiOuiActive ou désactive l’IME : IME.enabledOuiOuiOuiDétermine si l’IME est activé ou désactivé : IME.enabledOuiOuiOuiLit ou définit le mode de conversion IME : IME.conversionModeOuiOui ~~~~NonTransmet à l’IME la chaîne à convertir : IME.setCompositionString()Oui ~~NonNonLit dans l’IME la chaîne d’origine avant sa conversion : System.ime.addEventListener()Oui ~~NonNonTransmet la requête de conversion à IME : IME.doConversion()Oui ~~NonNon

~~ Ces opérations ne sont pas toutes prises en charge par tous les IME de Windows. Seul l’IME japonais les prend toutes en charge.

~~~~ Sur le Macintosh, seul l’IME japonais prend en charge ces méthodes. Les IME d’éditeurs tiers ne les prennent pas en charge.

La version ActionScript 3.0 de cette classe ne prend pas Macintosh Classic en charge.

imeComposition Distribué lorsqu’un utilisateur a terminé une composition IME et la chaîne de lecture est disponible.flash.events.IMEEvent.IME_COMPOSITIONflash.events.IMEEvent Distribué lorsqu’un utilisateur a terminé une composition IME et la chaîne de lecture est disponible. Les IME sont généralement utilisées pour saisir du texte exprimé sous forme d’idéogrammes et non pas de lettres, comme pare exemple le Japonais, le Chinois et le Coréen. compositionAbandoned Force le moteur d’exécution à abandonner toute composition en cours. Force le moteur d’exécution à abandonner toute composition en cours. Appelez cette méthode lorsque l’utilisateur clique en dehors de la zone de composition, ou lorsque l’objet interactif qui a le focus est en cours de destruction ou de réinitialisation. Le moteur d’exécution valide la composition en appelant la méthode confirmComposition() dans le client. Par ailleurs, le moteur d’exécution réinitialise l’IME pour informer le système d’exploitation que la composition a été abandonnée. compositionSelectionChanged Appelez cette méthode lorsque la sélection au sein de la composition a été mise à jour, soit interactivement soit par programmation.startintSpécifie le décalage du début de la sélection, en octets. endintSpécifie le décalage de la fin de la sélection, en octets. Appelez cette méthode lorsque la sélection au sein de la composition a été mise à jour, soit interactivement soit par programmation. doConversion Demande à l’IME de sélectionner le premier candidat pour la chaîne de composition actuelle.L’appel n’a pas réussi. ErrorError Demande à l’IME de sélectionner le premier candidat pour la chaîne de composition actuelle. setCompositionString Définit la chaîne de composition IME.L’appel n’a pas réussi. ErrorErrorcompositionStringLa chaîne à envoyer à l’IME. Définit la chaîne de composition IME. Lorsque cette chaîne est définie, l’utilisateur peut sélectionner des candidats IME avant d’enregistrer le résultat dans le champ de texte ayant actuellement le focus.

Si aucun texte n’a le focus, cette méthode échoue et renvoie une erreur.

conversionMode Mode de conversion de l’IME actuel.StringUne tentative de définition a échoué. ErrorError Mode de conversion de l’IME actuel. Les valeurs possibles sont les constantes de chaîne de mode IME qui spécifient le mode de conversion :
  • ALPHANUMERIC_FULL
  • ALPHANUMERIC_HALF
  • CHINESE
  • JAPANESE_HIRAGANA
  • JAPANESE_KATAKANA_FULL
  • JAPANESE_KATAKANA_HALF
  • KOREAN
  • UNKNOWN (valeur en lecture seule, ne peut pas être définie)
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 Spécifie si l’IME système est activé (true) ou désactivé (false).BooleanUne tentative de définition a échoué. ErrorError Spécifie si l’IME système est activé (true) ou désactivé (false). Un IME activé effectue une entrée multi-octets ; un IME désactivé effectue une entrée alphanumérique. isSupported La propriété isSupported est définie sur true si la classe IME est prise en charge sur la plate-forme actuelle ; dans le cas contraire, elle est définie sur false.Boolean La propriété isSupported est définie sur true si la classe IME est prise en charge sur la plate-forme actuelle ; dans le cas contraire, elle est définie sur false.
System La classe System contient les propriétés associées aux paramètres régionaux et aux opérations. Object La classe System contient les propriétés associées aux paramètres régionaux et aux opérations, notamment les paramètres relatifs aux caméras et aux microphones, les opérations avec les objets partagés et l’utilisation du Presse-papiers.

Vous trouverez des propriétés et des méthodes supplémentaires dans d’autres classes au sein du package flash.system : les classes Capabilities, IME et Security.

Cette classe contient uniquement des méthodes et des propriétés statiques. Vous ne pouvez pas créer d’occurrences de la classe Système.

L’exemple suivant indique comment copier des informations sur la mémoire totale du système dans le Presse-papiers à l’aide d’un appel à System.totalMemory imbriqué dans un appel à la méthode System.setClipboard(). 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 Rend l’objet XML spécifié immédiatement disponible à des fins de nettoyage. nodeXMLRéférence XML qui doit être mise à disposition à des fins de nettoyage. Rend l’objet XML spécifié immédiatement disponible à des fins de nettoyage. Cette méthode supprime les connexions parent et enfant entre tous les nœuds pour le nœud XML spécifié. exit Ferme Flash Player.codeuintValeur à transmettre au système d’exploitation. Généralement, si le processus se ferme normalement, la valeur est 0. Ferme Flash Player.

Pour la version débogueur de Flash Player autonome uniquement.

Les applications AIR doivent appeler la méthode NativeApplication.exit() pour quitter l’application.

flash.desktop.NativeApplication.exit()
gc Impose le processus de nettoyage de la mémoire. Impose le processus de nettoyage de la mémoire.

Pour la version débogueur de Flash Player et des applications AIR uniquement. Dans une application AIR, la méthode System.gc() est activée uniquement dans le contenu s’exécutant dans l’application de débogage du lanceur AIR (ADL) ou, dans une application installée, dans le contenu du sandbox de sécurité de l’application.

pause Interrompt Flash Player ou l’application de débogage du lanceur AIR. Interrompt Flash Player ou l’application de débogage du lanceur AIR. Après avoir appelé cette méthode, l’application cesse toute activité, sauf la distribution des événements Socket.

Pour la version débogueur de Flash Player ou l’application de débogage du lanceur AIR.

resume()
resume Redémarre l’application après avoir appelé System.pause(). Redémarre l’application après avoir appelé System.pause().

Pour la version débogueur de Flash Player ou l’application de débogage du lanceur AIR.

pause()
setClipboard Remplace le contenu du presse-papiers par une chaîne de texte spécifiée.stringStringChaîne au format texte seul à placer dans le Presse-papiers du système, remplaçant son contenu actuel (si ce dernier contient déjà des données). Remplace le contenu du presse-papiers par une chaîne de texte spécifiée. Remplace le contenu du presse-papiers par une chaîne de texte spécifiée. Cette méthode fonctionne à partir de n’importe quel contexte de sécurité lorsqu’elle est appelée suite à un événement utilisateur (événement de clavier ou de périphérique de saisie, par exemple).

Cette méthode est fournie pour le contenu SWF s’exécutant dans Flash Player 9. Elle permet uniquement d’ajouter le contenu de la chaîne au Presse-papiers.

Le contenu de Flash Player 10 et le contenu dans le sandbox de sécurité de l’application d’une application AIR peuvent appeler la méthode Clipboard.setData().

flash.desktop.Clipboard
freeMemory Quantité de mémoire (en octets) allouée à Adobe&#xAE; Flash&#xAE; Player ou Adobe&#xAE; AIR&#xAE; et qui n’est pas en cours d’utilisation.Number Quantité de mémoire (en octets) qui n’est pas allouée à Adobe® Flash® Player ou Adobe® AIR® et qui n’est pas en cours d’utilisation. Cette portion de mémoire allouée non utilisée (System.totalMemory) fluctue à chaque nettoyage de la mémoire. Utilisez cette propriété pour gérer le nettoyage de la mémoire. privateMemorytotalMemorytotalMemoryNumberime L’IME système installé.flash.system:IME L’IME système installé. Pour s’inscrire aux événements imeComposition, appelez addEventListener() sur cette occurrence. IMEConversionModeprivateMemory Quantité totale de mémoire (en octets) utilisée par une application.Number Quantité totale de mémoire (en octets) utilisée par une application. Il s’agit de la quantité de mémoire privée résidente pour l’ensemble du processus.

Les développeurs AIR doivent utiliser cette propriété pour déterminer la consommation totale de mémoire d’une application.

Pour Flash Player, cela comprend la mémoire utilisée par l’application conteneur, telle que le navigateur Web.

freeMemorytotalMemorytotalMemoryNumber
totalMemoryNumber Quantité de mémoire (en octets) actuellement utilisée ayant été directement allouée par Flash Player ou AIR.Number Quantité de mémoire (en octets) actuellement utilisée ayant été directement allouée par Flash Player ou AIR.

Cette propriété, exprimée sous forme de nombre, prend en charge des valeurs plus élevées que la propriété System.totalMemory, qui est de type int.

Cette propriété ne renvoie pas toute la mémoire utilisée par une application Adobe AIR ou par l’application (par exemple, un navigateur) englobant le contenu de Flash Player. Le navigateur ou le système d’exploitation peut utiliser d’autres ressources mémoire. La propriété System.privateMemory indique toute la mémoire utilisée par une application.

freeMemoryprivateMemorytotalMemory
totalMemory Quantité de mémoire (en octets) actuellement utilisée ayant été directement allouée par Flash Player ou AIR.uint Quantité de mémoire (en octets) actuellement utilisée ayant été directement allouée par Flash Player ou AIR.

Cette propriété ne renvoie pas toute la mémoire utilisée par une application Adobe AIR ou par l’application (par exemple, un navigateur) englobant le contenu de Flash Player. Le navigateur ou le système d’exploitation peut utiliser d’autres ressources mémoire. La propriété System.privateMemory indique toute la mémoire utilisée par une application.

Si la quantité de mémoire allouée est supérieure à la valeur maximale d’un objet uint (uint.MAX_VALUE; soit 4 294 967 295), cette propriété est définie sur 0. La propriété System.totalMemoryNumber prend en charge des valeurs supérieures.

freeMemoryprivateMemorytotalMemoryNumber
useCodePage Une valeur booléenne qui indique la page de code à utiliser pour interpréter des fichiers texte externes.Boolean Une valeur booléenne qui indique la page de code à utiliser pour interpréter des fichiers texte externes. Lorsque la propriété est définie sur false, les fichiers texte externes sont interprétés comme de l’Unicode (ces fichiers doivent être codés en Unicode lorsque vous les enregistrez). Lorsque la propriété est définie sur true, les fichiers texte externes sont interprétés à l’aide de la page de code classique du système d’exploitation exécutant l’application. La valeur par défaut de useCodePage est false.

Le texte que vous chargez comme fichier externe (à l’aide de Loader.load(), la classe URLLoader ou URLStream) doit avoir été enregistré comme de l’Unicode pour que l’application le reconnaisse comme tel. Pour coder des fichiers externes comme de l’Unicode, enregistrez les fichiers dans une application qui prend en charge l’Unicode, tel que Notepad sous Windows.

Si vous chargez des fichiers externes qui ne sont pas codés en Unicode, définissez useCodePage sur true. Ajoutez le code suivant sur la première ligne de code du fichier qui charge les données (pour Flash Professional, ajoutez-le à la première image) :

System.useCodePage = true;

Lorsque ce code est présent, l’application interprète le texte externe à l’aide de la page de code classique du système d’exploitation. Par exemple, ce code est généralement CP1252 pour un système d’exploitation Windows anglais et Shift-JIS pour un système d’exploitation japonais.

Si vous définissez useCodePage sur true, Flash Player 6 et les versions ultérieures traitent le texte comme Flash Player 5 (Flash Player 5 traitait l’ensemble du texte comme s’il se trouvait dans la page de code classique du système d’exploitation exécutant le lecteur).

Si vous définissez useCodePage sur true, souvenez-vous que la page de code classique du système d’exploitation exécutant l’application doit inclure les caractères utilisés dans votre fichier de texte externe afin d’afficher le texte. Par exemple, si vous chargez un fichier texte externe contenant des caractères chinois, ceux-ci ne peuvent s’afficher sur un système utilisant la page de code CP1252 car celle-ci ne comprend pas les caractères chinois.

Pour que les utilisateurs de toutes les plates-formes puissent afficher les fichiers de texte externes utilisés dans votre application, vous devez coder tous les fichiers de texte externes en Unicode et conserver la propriété useCodePage définie sur false par défaut. Ainsi, l’application (Flash Player 6 et les versions ultérieures ou AIR) interprète le texte comme Unicode.

flash.display.Loader.load()
SecurityDomain La classe SecurityDomain représente le « sandbox » de sécurité actuel, qui est également appelé domaine de sécurité.Object La classe SecurityDomain représente le « sandbox » de sécurité actuel, qui est également appelé domaine de sécurité. En transmettant une occurrence de cette classe à Loader.load(), vous pouvez demander que le média chargé soit placé dans un sandbox spécifique. currentDomain Définit le domaine de sécurité actuel.flash.system:SecurityDomain Définit le domaine de sécurité actuel. flash.display.Loader.load()flash.display.Loader.loadBytes()flash.system.LoaderContextSystemUpdater La classe SystemUpdater permet de mettre à jour les modules de Flash Player, tels que le module DRM pour Flash Access, ainsi que Flash Player lui-même.flash.events:EventDispatcher La classe SystemUpdater permet de mettre à jour les modules de Flash Player, tels que le module DRM pour Flash Access, ainsi que Flash Player lui-même. Les modules disponibles sont répertoriés dans la classe SystemUpdaterType.

Flash Player identifie la nécessité de mise à jour d’un module Flash Access en distribuant un événement NetStatusEvent. L’événement possède une propriété code dont la valeur est "DRM.UpdateNeeded". Pour mettre à jour les modules Flash Access, l’autorisation de l’utilisateur n’est pas requise. Ecoutez l’événement et lancez la mise à jour en appelant update("DRM").

Flash Player identifie la nécessité de mise à jour du lecteur en distribuant un événement StatusEvent avec plusieurs valeurs de la propriété code (voir l’événement status). Pour mettre à jour le lecteur, l’autorisation de l’utilisateur n’est pas requise. Ecoutez l’événement et présentez à l’utilisateur l’option de mise à jour. L’utilisateur doit accepter et lancer la mise à jour actuelle, par exemple en cliquant sur un bouton dans l’interface utilisateur. Vous pouvez alors lancer la mise à jour du lecteur directement dans ActionScript en appelant update("SYSTEM").

Remarque : l’API de SystemUpdater est prise en charge sur toutes les plates-formes de bureau.

flash.system.SystemUpdaterTypecancel Distribué lorsque l’utilisateur annule une mise à jour du lecteur.flash.events.Event.CANCELflash.events.Event Distribué lorsque l’utilisateur annule une mise à jour du lecteur. Cet événement est distribué uniquement si une mise à jour de type SystemUpdaterType.System est sollicitée et si l’utilisateur annule la mise à jour. complete Distribué lorsque la mise à jour se termine.flash.events.Event.COMPLETEflash.events.Event Distribué lorsque la mise à jour se termine. securityError Distribué lorsqu’une erreur de sécurité est détectée.flash.events.SecurityErrorEvent.SECURITY_ERRORflash.events.SecurityErrorEvent Distribué lorsqu’une erreur de sécurité est détectée. Par exemple, une erreur de sécurité peut entraîner cet événement si le lecteur tente d’effectuer une mise à jour alors que la stratégie de sécurité ne le permet pas. ioError Distribué lorsqu’une erreur d’E/S se produit.flash.events.IOErrorEvent.IO_ERRORflash.events.IOErrorEvent Distribué lorsqu’une erreur d’E/S se produit. Par exemple, une erreur peut entraîner cet événement en cas de perte de la connexion à Internet. progress Distribué pour indiquer la progression du téléchargement.flash.events.ProgressEvent.PROGRESSflash.events.ProgressEvent Distribué pour indiquer la progression du téléchargement. Cet événement est similaire à l’événement progress dans les classes Loader et URLLoader. status Distribué lorsque la mise à jour échoue.flash.events.StatusEvent.STATUSflash.events.StatusEvent Distribué lorsque la mise à jour échoue. Une mise à jour peut échouer pour l’une des raisons suivantes :

  • L’appelant est exécuté sur une plate-forme ou une architecture non prise en charge. Dans ce cas, la valeur de la propriété code est "DRM.UpdateFailedNotSupported" et la valeur de la propriété level est "error".
  • Le package de mises à jour sollicité ne peut pas se trouver sur le serveur. Dans ce cas, la valeur de la propriété code est "DRM.UpdateFailedNotCurrentlyAvailable" et la valeur de la propriété level est "error".
  • Le module Flash Access n’est pas installé. Cette erreur est similaire au code "DRM.UpdateNeeded", distribué par NetStatusEvent. Le cas échéant, vous devez cependant télécharger en premier lieu une version plus récente de Flash Player. Dans ce cas, la valeur de la propriété code est "DRM.UpdateNeededButIncompatible" et la valeur de la propriété level est "error". Pour effectuer une mise à jour de Flash Player, appelez SystemUpdater.update(SystemUpdaterType.SYSTEM).
  • Le téléchargement du nouveau module DRM a échoué. Dans ce cas, la valeur de la propriété code est "DRM.UpdateFailed" et la valeur de la propriété level est "error".

open Distribué lorsqu’une mise à jour commence.flash.events.Event.OPENflash.events.Event Distribué lorsqu’une mise à jour commence. La mise à jour est terminée lorsqu’un événement « complete » est envoyé, ou lorsqu’un événement IOErrorEvent, SecurityErrorEvent ou StatusEvent est envoyé. SystemUpdater Constructeur. Constructeur. cancel Annule la mise à jour en cours. Annule la mise à jour en cours. update Commence la mise à jour d’un type donné.typeString Commence la mise à jour d’un type donné. Les types de mise à jour sont l’une des constantes de chaîne définies dans la classe SystemUpdaterType. Seule une mise à jour à la fois est autorisée sur l’ensemble des navigateurs.

Lorsque la mise à jour commence, écoutez les événements définis dans cette classe. Les événements suivants indiquent la fin d’une mise à jour et permettent de lancer une nouvelle mise à jour ou de poursuivre une tentative de mise à jour, à l’instar d’un appel de la fonction update() :

  • complete
  • cancel
  • securityError
  • ioError
  • status

flash.system.SystemUpdaterType