Le package flash.system contient une fonction de niveau package,
fscommand()
, qui facilite la communication entre un fichier SWF et son conteneur.Fonction | Défini par | ||
---|---|---|---|
Permet au fichier SWF de communiquer avec Flash Player ou le programme hébergeant Flash Player, tel qu’un navigateur Web. | flash.system |
fscommand | () | fonction |
public function fscommand(command:String, args:String = ""):void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9 |
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
allowScriptAccess
est 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).
Commande | Parameter (args) | Rôle |
---|---|---|
quit | Aucun | Ferme la projection. |
fullscreen | true ou false | Spécifiez true pour exécuter Flash Player en mode plein écran. Spécifiez false pour rétablir le mode d’affichage normal du menu. |
allowscale | true ou false | Si 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. |
showmenu | true ou false | Spé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. |
exec | Chemin de l’application | Exécute une application depuis la projection. |
trapallkeys | true ou false | Spé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 defscommand("quit")
. - Seuls
allowscale
etexec
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).
Paramètres
command:String — Chaîne transmise à l’application hôte ou commande passée à Flash Player.
| |
args:String (default = " ") — Chaîne transmise à l’application hôte ou valeur passée à Flash Player.
|
Valeur émise
Error — 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.
|
Eléments de l’API associés
Exemple ( Comment utiliser cet exemple )
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); } } }
Tue Jun 12 2018, 09:48 AM Z