flash.netXMLSocket La classe XMLSocket implémente les sockets client qui permettent à Flash Player ou à l’application AIR de communiquer avec un ordinateur serveur identifié par une adresse IP ou un nom de domaine.flash.events:EventDispatcher La classe XMLSocket implémente les sockets client qui permettent à Flash Player ou à l’application AIR de communiquer avec un ordinateur serveur identifié par une adresse IP ou un nom de domaine. La classe XMLSocket est utile pour les applications clients/serveur qui requièrent un court délai, telles que des systèmes de dialogue en ligne en temps réel. Une solution de dialogue en ligne par HTTP classique interroge fréquemment le serveur et télécharge les nouveaux messages à l’aide d’une requête HTTP. Par contraste, une solution de dialogue en ligne XMLSocket maintient une connexion ouverte avec le serveur, permettant à celui-ci d’envoyer immédiatement les messages entrants sans requête du client. Pour utiliser la classe XMLSocket, l’ordinateur serveur doit exécuter un démon capable de lire le protocole utilisé par la classe XMLSocket. Le protocole est décrit dans la liste suivante :
  • Les messages XML sont envoyés via une connexion socket à flux TCP/IP bidirectionnel simultané.
  • Chaque message XML est un document XML complet, terminé par un octet nul (0).
  • Un nombre illimité de messages XML peut être envoyé et reçu via une connexion XMLSocket.

La configuration d’un serveur en vue de la communication avec un objet XMLSocket peut être difficile à réaliser. Si votre application ne requiert pas d’interactivité en temps réel, utilisez la classe URLLoader, plutôt que la classe XMLSocket.

Pour utiliser les méthodes de la classe XMLSocket, utilisez tout d’abord le constructeur, new XMLSocket, pour créer un objet XMLSocket.

Les fichiers SWF du sandbox local avec système de fichiers peuvent ne pas utiliser de sockets.

Les fichiers de régulation de socket situés sur l’hôte cible spécifient les hôtes à partir desquels les fichiers SWF peuvent établir des connexions de socket et les ports sur lesquels ces connexions peuvent être établies. Les exigences de sécurité relatives aux fichiers de régulation de socket sont devenues plus rigoureuses avec les dernières versions de Flash Player. Dans toutes les versions de Flash Player, Adobe recommande d’utiliser un fichier de régulation de socket ; dans certains cas, un tel fichier est même obligatoire. Ainsi, si vous utilisez des objets XMLSocket, assurez-vous que l’hôte cible fournisse au besoin un fichier de régulation de socket.

Voici une liste résumant les exigences relatives aux fichiers de régulation de socket dans les différentes versions de Flash Player :

  • Dans Flash Player 9.0.124.0 et versions ultérieures, un fichier de régulation de socket est obligatoire pour toutes les connexions XMLSocket. Cela signifie qu’un fichier de régulation de socket doit obligatoirement se trouver sur l’hôte cible, quel que soit le port sur lequel s’établit la connexion, et est obligatoire même si vous vous connectez à un port situé sur l’hôte servant le fichier SWF.
  • Dans Flash Player versions 9.0.115.0 et ultérieures, si vous souhaitez vous connecter à un numéro de port inférieur à 1024, ou à un hôte autre que celui qui sert le fichier SWF, un fichier de régulation de socket est obligatoire sur l’hôte cible.
  • Dans Flash Player 9.0.115.0, même si le fichier de régulation de socket n’est pas obligatoire, l’utilisation du débogueur de Flash Player entraîne l’affichage d’un avertissement si l’hôte cible ne fournit pas de fichier de régulation de socket.

Néanmoins, dans Adobe AIR, le contenu du sandbox de sécurité application (contenu installé avec l’application AIR) n’est pas soumis à ces restrictions de sécurité.

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

L’exemple suivant utilise la classe XMLSocketExample pour envoyer des données à l’aide d’un XMLSocket et imprimer des informations pendant des événements XMLSocket. Pour ce faire, exécutez la procédure suivante :
  1. Le constructeur XMLSocketExample crée une occurrence de XMLSocket nommée socket et transmet le socket à la méthode ConfigureListeners() (décrite ci-dessous), puis appelle la méthode connect() de XMLSocket avec le nom d’hôte « localhost » et le numéro de port 8080.
  2. La méthode configureListeners() est ensuite appelée, ce qui ajoute des écouteurs à chacun des événements XMLSocket pris en charge :
    • closeHandler() : écoute l’événement close, qui est distribué après la fermeture de la connexion réseau.
    • connectHandler() : écoute l’événement connect, qui est distribué à l’ouverture de la connexion réseau.
    • dataHandler() : écoute l’événement data, qui est distribué chaque fois que le XMLSocket reçoit de nouvelles données.
    • progressHandler() : écoute l’événement progress, qui est distribué à chaque appel de la méthode send() et pendant l’envoi.
    • securityErrorHandler() : écoute l’événement securityError, qui est distribué en cas de tentative d’accès au XMLSocket avec un paramètre de sécurité de lecture locale incorrect ou avec un numéro de port inférieur à 1024.
    • ioErrorHandler() : écoute l’événement ioError, qui se produit uniquement en cas d’échec d’une opération d’envoi ou de réception de données.

Remarques :

  • Vous devrez compiler le fichier SWF en définissant « Sécurité de lecture locale » sur « Accès au réseau uniquement ».
  • Pour que cet exemple fonctionne, vous devez disposer d’un serveur s’exécutant sur votre domaine à l’aide du port 8080.
  • Si vous exécutez Flash Player 9.0.124.0 ou une version ultérieure, vous devez placer sur votre serveur un fichier de régulation de socket autorisant les connexions de socket de votre domaine au port 8080. Pour plus d’informations sur la fourniture de fichiers de régulation de socket, voir la rubrique : Configuration d’un serveur de fichier de régulation de socket du Centre des développeurs de Flash Player.

package { import flash.display.Sprite; import flash.events.*; import flash.net.XMLSocket; public class XMLSocketExample extends Sprite { private var hostName:String = "localhost"; private var port:uint = 8080; private var socket:XMLSocket; public function XMLSocketExample() { socket = new XMLSocket(); configureListeners(socket); if (hostName && port) { socket.connect(hostName, port); } } public function send(data:Object):void { socket.send(data); } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.CLOSE, closeHandler); dispatcher.addEventListener(Event.CONNECT, connectHandler); dispatcher.addEventListener(DataEvent.DATA, dataHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); } private function closeHandler(event:Event):void { trace("closeHandler: " + event); } private function connectHandler(event:Event):void { trace("connectHandler: " + event); } private function dataHandler(event:DataEvent):void { trace("dataHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } private function progressHandler(event:ProgressEvent):void { trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } } }
flash.net.URLLoader.load()flash.net.URLLoadersecurityError Distribué si un appel de la méthode Socket.connect() tente une connexion à un serveur situé hors du sandbox de sécurité de l’appelant ou à un port inférieur à 1024.flash.events.SecurityErrorEvent.SECURITY_ERRORflash.events.SecurityErrorEvent Distribué si un appel de la méthode XMLSocket.connect() tente une connexion à un serveur situé hors du sandbox de sécurité de l’appelant ou à un port inférieur à 1024. XMLSocket.connect()ioError Distribué lorsqu’il se produit une erreur d’entrée/sortie entraînant l’échec d’une opération d’envoi ou de réception.flash.events.IOErrorEvent.IO_ERRORflash.events.IOErrorEvent Distribué lorsqu’il se produit une erreur d’entrée/sortie entraînant l’échec d’une opération d’envoi ou de réception. data Distribué après l’envoi ou la réception de données brutes.flash.events.DataEvent.DATAflash.events.DataEvent Distribué après l’envoi ou la réception de données brutes. connect Distribué après un appel de la méthode XMLSocket.connect() qui a abouti.flash.events.Event.CONNECTflash.events.Event Distribué après un appel de la méthode XMLSocket.connect() qui a abouti. close Distribué lorsque le serveur ferme la connexion socket.flash.events.Event.CLOSEflash.events.Event Distribué lorsque le serveur ferme la connexion socket. L’événement close se produit uniquement lorsque le serveur ferme la connexion. Il n’est pas distribué lorsque vous appelez la méthode XMLSocket.close(). XMLSocket Crée un objet XMLSocket.hostStringnullNom de domaine DNS complet ou adresse IP au format 222.333.444. Dans Flash Player 9.0.115.0 et AIR 1.0 et les versions ultérieures, vous pouvez spécifier les adresses IPv6, telles que rtmp://[2001:db8:ccc3:ffff:0:444d:555e:666f]. Vous pouvez également spécifier null pour vous connecter au serveur hôte qui héberge le fichier SWF. Si le fichier SWF effectuant cet appel s’exécute dans un navigateur Web, host doit appartenir au même domaine que le fichier SWF. portint0Numéro du port TCP utilisé sur l’hôte cible pour établir une connexion. Dans Flash Player 9.0.124.0 et les versions ultérieures, l’hôte cible doit fournir un fichier de régulation de socket spécifiant que les connexions de socket sont autorisées depuis l’hôte fournissant le fichier SWF vers le port spécifié. Dans les versions précédentes de Flash Player, le fichier de régulation de socket n’est obligatoire que si vous souhaitez vous connecter à un numéro de port inférieur à 1024 ou à un hôte autre que celui servant le fichier SWF. Crée un objet XMLSocket. En l’absence de paramètres, un socket initialement déconnecté est créé. Si des paramètres sont spécifiés, une tentative de connexion à l’hôte et au port indiqués est effectuée.

Remarque : il est fortement conseillé d’utiliser la forme du constructeur sans paramètre, d’ajouter ensuite des écouteurs d’événement éventuels, puis d’appeler la méthode connect avec les paramètres host et port. Cette séquence garantit que tous les écouteurs d’événement fonctionnent correctement.

connect()
close Ferme la connexion spécifiée par l’objet XMLSocket. Ferme la connexion spécifiée par l’objet XMLSocket. L’événement close se produit uniquement lorsque le serveur ferme la connexion. Il n’est pas distribué lorsque vous appelez la méthode close(). connect()connect Etablit une connexion à l’hôte Internet spécifié en utilisant le port TCP indiqué.Les fichiers non approuvés au niveau local ne peuvent pas communiquer avec Internet. Pour contourner cette restriction, reclassifiez le fichier en tant que fichier local avec accès au réseau ou en tant que fichier approuvé. SecurityErrorSecurityErrorIl est impossible de spécifier un port de socket supérieur à 65535. SecurityErrorSecurityErrorhostStringNom de domaine DNS complet ou adresse IP au format 111.222.333.444. Vous pouvez également spécifier null pour vous connecter au serveur hôte qui héberge le fichier SWF. Si le fichier appelant est un fichier SWF s’exécutant dans un navigateur Web, host doit appartenir au même domaine que le fichier. portintNuméro du port TCP utilisé sur l’hôte cible pour établir une connexion. Dans Flash Player 9.0.124.0 et les versions ultérieures, l’hôte cible doit fournir un fichier de régulation de socket spécifiant que les connexions de socket sont autorisées depuis l’hôte fournissant le fichier SWF vers le port spécifié. Dans les versions précédentes de Flash Player, le fichier de régulation de socket n’est obligatoire que si vous souhaitez vous connecter à un numéro de port inférieur à 1024 ou à un hôte autre que celui servant le fichier SWF. Etablit une connexion à l’hôte Internet spécifié en utilisant le port TCP indiqué.

Si vous spécifiez null pour le paramètre host, l’hôte contacté est celui où réside le fichier appelant la méthode XMLSocket.connect(). Par exemple, si le fichier appelant a été téléchargé à partir du site www.adobe.com, le fait de spécifier null pour le paramètre host équivaut à se connecter à www.adobe.com.

Vous pouvez empêcher un fichier 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.

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

flash.events.Event.CONNECTsecurityErrorflash.events:SecurityErrorEventUne opération de connexion a tenté de se connecter à un hôte situé hors du sandbox de sécurité de l’appelant ou à un port qui nécessite un fichier de régulation de socket. Pour contourner ces problèmes, utilisez un fichier de régulation de socket sur l’hôte cible. Une opération de connexion a tenté de se connecter à un hôte situé hors du sandbox de sécurité de l’appelant ou à un port qui nécessite un fichier de régulation de socket.dataflash.events:DataEventDistribué lors de la réception de données brutes. Distribué lors de la réception de données brutes.connectflash.events:EventDistribué lorsqu’une connexion réseau est établie. Distribué lorsqu’une connexion réseau est établie.
send Convertit l’objet ou les données XML spécifiés dans le paramètre object en une chaîne et la transmet au serveur, suivie d’un octet nul (0).L’objet XMLSocket n’est pas connecté au serveur. IOErrorflash.errors:IOErrorobjectObjet XML ou toute autre donnée à transmettre au serveur. Convertit l’objet ou les données XML spécifiés dans le paramètre object en une chaîne et la transmet au serveur, suivie d’un octet nul (0). Si object est un objet XML, la chaîne est la représentation textuelle XML de l’objet XML. L’opération d’envoi est asynchrone ; elle est immédiatement renvoyée, mais les données peuvent être transmises plus tard. La méthode XMLSocket.send() ne renvoie pas de valeur indiquant si les données ont bien été transmises.

Si vous ne connectez pas l’objet XMLSocket au serveur à l’aide de XMLSocket.connect(), l’opération XMLSocket.send() échoue.

connect()
connected Indique si l’objet XMLSocket est actuellement connecté.Boolean Indique si l’objet XMLSocket est actuellement connecté. Vous pouvez également vérifier si la connexion a abouti en vous enregistrant pour les événements connect et ioError. connectioErrortimeout Indique le délai d’attente d’une connexion, en millisecondes.int Indique le délai d’attente d’une connexion, en millisecondes.

Si la connexion n’est pas établie pendant le délai spécifié, elle échoue. La valeur par défaut est de 20 000 (vingt secondes).

IPVersion La classe IPVersion définit des constantes représentant les différentes familles d’adresses IP.Object La classe IPVersion définit des constantes représentant les différentes familles d’adresses IP. IPV4 Adresse IPv4 (protocole Internet version 4).IPv4String Adresse IPv4 (protocole Internet version 4).

Les adresses IPv4 sont exprimées dans ActionScript sous forme de chaîne en notation point-décimale, par exemple : "192.0.2.0".

IPV6 Adresse IPv6 (protocole Internet version 6).IPv6String Adresse IPv6 (protocole Internet version 6).

Les adresses IPv6 sont exprimées dans ActionScript sous forme de chaîne en notation hexadécimale-deux points et entre crochets, par exemple : "[2001:db8:ccc3:ffff:0:444d:555e:666f]".

Socket La classe Socket permet au code d’établir des connexions socket TCP (Transport Control Protocol, protocole de contrôle de transmission) pour l’envoi et la réception de données binaires.flash.utils:IDataInputflash.utils:IDataOutputflash.events:EventDispatcher La classe Socket permet au code d’établir des connexions socket TCP (Transport Control Protocol, protocole de contrôle de transmission) pour l’envoi et la réception de données binaires.

La classe Socket est utile si vous utilisez des serveurs faisant appel à des protocoles binaires.

Pour utiliser les méthodes de la classe Socket, utilisez tout d’abord le constructeur, new Socket, pour créer un objet Socket.

Un socket transmet et reçoit des données en mode asynchrone.

Sur certaines systèmes d’exploitation, la méthode flush() est appelée automatiquement entre les images d’exécution. Sur d’autres, notamment sur Windows, les données ne sont jamais envoyées, à moins que vous n’appeliez explicitement la méthode flush(). Pour assurer la fiabilité de votre application sur tous les systèmes d’exploitation, il est judicieux d’appeler la méthode flush() après l’écriture de chaque message (ou du groupe de données associé) sur le socket.

Dans Adobe AIR, les objets Socket sont également créés lorsqu’un serveur socket d’écoute reçoit une connexion provenant d’un processus externe. Le socket représentant la connexion est distribué dans un ServerSocketConnectEvent. Votre application est chargée de maintenir une référence à cet objet Socket. Dans le cas contraire, l’objet Socket peut être nettoyé et détruit par le moteur d’exécution sans avertissement.

Le contenu SWF s’exécutant dans le sandbox de sécurité local avec système de fichiers ne peut pas utiliser de sockets.

Les fichiers de régulation de socket situés sur l’hôte cible spécifient les hôtes à partir desquels les fichiers SWF peuvent établir des connexions de socket et les ports sur lesquels ces connexions peuvent être établies. Les exigences de sécurité relatives aux fichiers de régulation de socket sont devenues plus rigoureuses avec les dernières versions de Flash Player. Dans toutes les versions de Flash Player, Adobe recommande d’utiliser un fichier de régulation de socket ; dans certains cas, un tel fichier est même obligatoire. Par conséquent, si vous utilisez des objets Socket, assurez-vous que l’hôte cible fournisse, le cas échéant, un fichier de régulation de socket.

Voici une liste résumant les exigences relatives aux fichiers de régulation de socket dans les différentes versions de Flash Player :

  • Dans Flash Player 9.0.124.0 et les versions ultérieures, un fichier de régulation de socket est requis pour toutes les connexions socket. Cela signifie qu’un fichier de régulation de socket doit obligatoirement se trouver sur l’hôte cible, quel que soit le port sur lequel s’établit la connexion, et est obligatoire même si vous vous connectez à un port situé sur l’hôte servant le fichier SWF.
  • Dans Flash Player versions 9.0.115.0 et ultérieures, si vous souhaitez vous connecter à un numéro de port inférieur à 1024, ou à un hôte autre que celui qui sert le fichier SWF, un fichier de régulation de socket est obligatoire sur l’hôte cible.
  • Dans Flash Player 9.0.115.0, même si le fichier de régulation de socket n’est pas obligatoire, l’utilisation du débogueur de Flash Player entraîne l’affichage d’un avertissement si l’hôte cible ne fournit pas de fichier de régulation de socket.
  • Dans AIR, aucun fichier de régulation de socket n’est requis pour le contenu s’exécutant dans le sandbox de sécurité de l’application. Les fichiers de régulation de socket sont requis pour toute connexion socket établie par le contenu s’exécutant en dehors du sandbox de sécurité de l’application AIR.

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

L’exemple suivant écrit et lit dans un socket et produit des informations transmises pendant des événements de socket. Vous trouverez ci-dessous des extraits de l’exemple :
  1. Le constructeur crée une occurrence de CustomSocket nommée socket et transmet le nom d’hôte localhost et le port 80 comme arguments. CustomSocket étendant Socket, un appel à la méthode super() invoque un constructeur de Socket.
  2. Cet exemple appelle ensuite la méthode configureListeners(), qui ajoute des écouteurs pour les événements de Socket.
  3. Enfin, la méthode de socket connect() est appelée avec localhost comme nom d’hôte et 80 comme numéro de port.

Remarque : pour exécuter l’exemple, vous avez besoin d’un serveur s’exécutant dans le domaine où réside le fichier SWF (dans l’exemple, localhost) et d’une écoute du port 80.

package { import flash.display.Sprite; public class SocketExample extends Sprite { public function SocketExample() { var socket:CustomSocket = new CustomSocket("localhost", 80); } } } import flash.errors.*; import flash.events.*; import flash.net.Socket; class CustomSocket extends Socket { private var response:String; public function CustomSocket(host:String = null, port:uint = 0) { super(); configureListeners(); if (host && port) { super.connect(host, port); } } private function configureListeners():void { addEventListener(Event.CLOSE, closeHandler); addEventListener(Event.CONNECT, connectHandler); addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler); } private function writeln(str:String):void { str += "\n"; try { writeUTFBytes(str); } catch(e:IOError) { trace(e); } } private function sendRequest():void { trace("sendRequest"); response = ""; writeln("GET /"); flush(); } private function readResponse():void { var str:String = readUTFBytes(bytesAvailable); response += str; } private function closeHandler(event:Event):void { trace("closeHandler: " + event); trace(response.toString()); } private function connectHandler(event:Event):void { trace("connectHandler: " + event); sendRequest(); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function socketDataHandler(event:ProgressEvent):void { trace("socketDataHandler: " + event); readResponse(); } }
ServerSocketDatagramSocketsecurityError Distribué si un appel de la méthode Socket.connect() tente d’établir une connexion à un serveur interdit par le sandbox de sécurité de l’appelant ou à un port inférieur à 1024, et qu’il n’existe aucun fichier de régulation de socket pour autoriser ce type de connexion.flash.events.SecurityErrorEvent.SECURITY_ERRORflash.events.SecurityErrorEventDistribué lorsqu’une erreur de sécurité se produit. Distribué si un appel de la méthode Socket.connect() tente d’établir une connexion à un serveur interdit par le sandbox de sécurité de l’appelant ou à un port inférieur à 1024, et qu’il n’existe aucun fichier de régulation de socket pour autoriser ce type de connexion.

Remarque : dans une application AIR, le contenu s’exécutant dans le sandbox de sécurité de l’application est autorisé à se connecter à un serveur et à un numéro de port sans un fichier de régulation de socket.

Socket.connect()
socketData Distribué lorsqu’un socket a reçu des données.flash.events.ProgressEvent.SOCKET_DATAflash.events.ProgressEvent Distribué lorsqu’un socket a reçu des données.

Les données reçues par le socket restent dans le socket jusqu’à leur lecture. Il n’est pas nécessaire de lire toutes les données disponibles pendant la gestion de cet événement.

Les événements de type socketData n’utilisent pas la propriété ProgressEvent.bytesTotal.

ioError Distribué lorsqu’il se produit une erreur d’entrée/sortie entraînant l’échec d’un envoi ou d’un chargement.flash.events.IOErrorEvent.IO_ERRORflash.events.IOErrorEvent Distribué lorsqu’il se produit une erreur d’entrée/sortie entraînant l’échec d’un envoi ou d’un chargement. connect Distribué lorsqu’une connexion réseau est établie.flash.events.Event.CONNECTflash.events.Event Distribué lorsqu’une connexion réseau est établie. close Distribué lorsque le serveur ferme la connexion socket.flash.events.Event.CLOSEflash.events.Event Distribué lorsque le serveur ferme la connexion socket.

L’événement close se produit uniquement lorsque le serveur ferme la connexion. Il n’est pas distribué lorsque vous appelez la méthode Socket.close().

Socket Crée un nouvel objet Socket.Cette erreur se produit dans le contenu SWF pour les raisons suivantes :
  • Les fichiers locaux avec système de fichiers ne peuvent pas communiquer avec Internet. Pour contourner ce problème, reclassifiez le fichier SWF en tant que fichier local avec accès au réseau ou en tant que fichier approuvé. Le contenu de l’application AIR dans le sandbox de sécurité de l’application n’est pas soumis à cette restriction.
  • Il est impossible de spécifier un port de socket supérieur à 65535.
SecurityErrorSecurityError
hostStringnullNom de domaine DNS complet ou adresse IP. Les adresses IPv4 sont spécifiées en notation point-décimale, par exemple 192.0.2.0. Dans Flash Player 9.0.115.0 et AIR 1.0 et les versions ultérieures, vous pouvez spécifier les adresses IPv6 à l’aide de la notation hexadécimale-deux points, par exemple 2001:db8:ccc3:ffff:0:444d:555e:666f. Vous pouvez également spécifier null pour vous connecter au serveur hôte qui héberge le fichier SWF. Si le fichier SWF effectuant cet appel s’exécute dans un navigateur Web, host doit appartenir au même domaine que le fichier SWF. portint0Numéro du port TCP utilisé sur l’hôte cible pour établir une connexion. Dans Flash Player 9.0.124.0 et les versions ultérieures, l’hôte cible doit fournir un fichier de régulation de socket spécifiant que les connexions de socket sont autorisées depuis l’hôte fournissant le fichier SWF vers le port spécifié. Dans les versions précédentes de Flash Player, le fichier de régulation de socket n’est obligatoire que si vous souhaitez vous connecter à un numéro de port inférieur à 1024 ou à un hôte autre que celui servant le fichier SWF.
Crée un nouvel objet Socket. En l’absence de paramètres, un socket initialement déconnecté est créé. Si des paramètres sont spécifiés, une tentative de connexion à l’hôte et au port indiqués est effectuée.

Remarque : il est fortement conseillé d’utiliser la forme du constructeur sans paramètre, d’ajouter ensuite des écouteurs d’événement éventuels, puis d’appeler la méthode connect avec les paramètres host et port. Cette séquence garantit que tous les écouteurs d’événement fonctionnent correctement.

connectflash.events:EventDistribué lorsqu’une connexion réseau est établie. Distribué lorsqu’une connexion réseau est établie.ioErrorflash.events:IOErrorEventDistribué lorsqu’il se produit une erreur d’entrée/sortie entraînant l’échec de la connexion. Distribué lorsqu’il se produit une erreur d’entrée/sortie entraînant l’échec de la connexion.securityErrorflash.events:SecurityErrorEvent Distribué si un appel à Socket.connect() tente de se connecter à un serveur qui ne fournit pas de fichier de régulation de socket ou à un serveur dont le fichier de régulation n’accorde pas à l’hôte appelant l’accès au port spécifié. Pour plus d’informations sur les fichiers de régulation, voir la rubrique « Contrôles de site Web (fichiers de régulation) » dans le Guide du développeur d’ActionScript 3.0 , ainsi que la rubrique Sécurité du Pôle de développement Flash Player (disponible en anglais uniquement). Cette erreur se produit dans le contenu SWF. Distribué si un appel à Socket.connect() tente de se connecter à un serveur qui ne fournit pas de fichier de régulation de socket, ou à un serveur dont le fichier de régulation n’accorde pas l’accès de l’hôte appelant au port spécifié.
close Ferme le socket.La fermeture du socket a été impossible ou il n’a pas été ouvert. IOErrorflash.errors:IOError Ferme le socket. Après l’appel de la méthode close(), toute lecture ou écriture de données est impossible.

L’événement close se produit uniquement lorsque le serveur ferme la connexion. Il n’est pas distribué lorsque vous appelez la méthode close().

Vous pouvez réutiliser l’objet Socket en lui appliquant à nouveau la méthode connect().

connect Connecte le socket à l’hôte et au port spécifiés.Aucun hôte n’a été spécifié et la connexion a échoué. IOErrorflash.errors:IOErrorCette erreur se produit dans le contenu SWF pour les raisons suivantes :
  • Les fichiers SWF non approuvés au niveau local ne peuvent pas communiquer avec Internet. Pour contourner cette restriction, reclassifiez le fichier en tant que fichier local avec accès au réseau ou en tant que fichier approuvé.
  • Il est impossible de spécifier un port de socket supérieur à 65535.
  • Dans la page HTML qui héberge le contenu SWF, le paramètre allowNetworking des balises object et embed est défini sur "none".
SecurityErrorSecurityError
hostStringNom ou adresse IP de l’hôte auquel la connexion doit être établie. Si aucun hôte n’est spécifié, l’hôte hébergeant le fichier appelant est contacté. Si vous ne spécifiez pas d’hôte, utilisez un écouteur d’événement pour déterminer si la connexion a abouti. portintNuméro du port auquel établir la connexion.
Connecte le socket à l’hôte et au port spécifiés.

Si la connexion échoue immédiatement, un événement est distribué ou une exception est émise : un événement d’erreur est distribué si un hôte a été spécifié, et une exception est émise dans le cas contraire. Dans tous les autres cas, l’état de la connexion est signalé par un événement. Si le socket est déjà connecté, la connexion existante est d’abord fermée.

connectflash.events:EventDistribué lorsqu’une connexion réseau est établie. Distribué lorsqu’une connexion réseau est établie.ioErrorflash.events:IOErrorEventDistribué lorsqu’un hôte est spécifié et qu’il se produit une erreur d’entrée/sortie entraînant l’échec de la connexion. Distribué lorsqu’un hôte est spécifié et qu’il se produit une erreur d’entrée/sortie entraînant l’échec de la connexion. securityErrorflash.events:SecurityErrorEventDistribué si un appel à Socket.connect() tente de se connecter à un serveur qui ne fournit pas de fichier de régulation de socket ou à un serveur dont le fichier de régulation n’accorde pas à l’hôte appelant l’accès au port spécifié. Pour plus d’informations sur les fichiers de régulation, voir la rubrique « Contrôles de site Web (fichiers de régulation) » dans le Guide du développeur d’ActionScript 3.0 , ainsi que la rubrique Sécurité du Pôle de développement Flash Player (disponible en anglais uniquement). Distribué si un appel à Socket.connect() tente de se connecter à un serveur qui ne fournit pas de fichier de régulation de socket, ou à un serveur dont le fichier de régulation n’accorde pas l’accès de l’hôte appelant au port spécifié.
flush Efface les données accumulées dans la mémoire tampon de sortie du socket.Une erreur d’E/S s’est produite dans le socket ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOError Efface les données accumulées dans la mémoire tampon de sortie du socket.

Sur certaines systèmes d’exploitation, la méthode flush() est appelée automatiquement entre les images d’exécution. Sur d’autres, notamment sur Windows, les données ne sont jamais envoyées, à moins que vous n’appeliez explicitement la méthode flush(). Pour assurer la fiabilité de votre application sur tous les systèmes d’exploitation, il est judicieux d’appeler la méthode flush() après l’écriture de chaque message (ou du groupe de données associé) sur le socket.

readBoolean Lit une valeur booléenne dans le socket.Les données à lire sont insuffisantes. EOFErrorflash.errors:EOFErrorUne erreur d’E/S s’est produite dans le socket ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorValeur true si l’octet lu est non nul, false dans le cas contraire. Boolean Lit une valeur booléenne dans le socket. Après la lecture d’un seul octet, la méthode renvoie true si l’octet est non nul, false dans le cas contraire. readByte Lit un octet signé dans le socket.Les données à lire sont insuffisantes. EOFErrorflash.errors:EOFErrorUne erreur d’E/S s’est produite dans le socket ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorValeur comprise entre -128 et 127. int Lit un octet signé dans le socket. readBytes Lit dans le socket le nombre d’octets de données spécifié par le paramètre length.Les données à lire sont insuffisantes. EOFErrorflash.errors:EOFErrorUne erreur d’E/S s’est produite dans le socket ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorbytesflash.utils:ByteArrayObjet ByteArray dont les données doivent être lues. offsetuint0Décalage à partir duquel la lecture des données doit commencer dans le tableau d’octets. lengthuint0Nombre d’octets à lire. La valeur 0 (par défaut) provoque la lecture de toutes les données disponibles. Lit dans le socket le nombre d’octets de données spécifié par le paramètre length. Les octets sont lus dans le tableau d’octets spécifié, en partant de la position indiquée par offset. readDouble Lit dans le socket un nombre à virgule flottante à deux décimales et conforme à IEEE 754.Les données à lire sont insuffisantes. EOFErrorflash.errors:EOFErrorUne erreur d’E/S s’est produite dans le socket ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorNombre à virgule flottante à deux décimales, conforme à IEEE 754. Number Lit dans le socket un nombre à virgule flottante à deux décimales et conforme à IEEE 754. readFloat Lit dans le socket un nombre à virgule flottante à une décimale et conforme à IEEE 754.Les données à lire sont insuffisantes. EOFErrorflash.errors:EOFErrorUne erreur d’E/S s’est produite dans le socket ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorNombre à virgule flottante à une décimale, conforme à IEEE 754. Number Lit dans le socket un nombre à virgule flottante à une décimale et conforme à IEEE 754. readInt Lit un entier de 32 bits signé dans le socket.Les données à lire sont insuffisantes. EOFErrorflash.errors:EOFErrorUne erreur d’E/S s’est produite dans le socket ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorValeur comprise entre -2147483648 et 2147483647. int Lit un entier de 32 bits signé dans le socket. readMultiByte Lit une chaîne multi-octets dans le flux d’octets, en utilisant le jeu de caractères spécifié.Les données à lire sont insuffisantes. EOFErrorflash.errors:EOFErrorChaîne codée au format UTF-8. StringlengthuintNombre d’octets à lire dans le flux d’octets. charSetStringChaîne désignant le le jeu de caractères à utiliser pour interpréter les octets. Parmi les chaînes de jeu de caractères supportées figurent shift_jis, CN-GB et iso-8859-1. Pour obtenir la liste complète, voir la section Jeux de caractères pris en charge.

Remarque : si la valeur du paramètre charSet n’est pas reconnue par le système actuel, l’application utilise la page de code par défaut du système comme jeu de caractères. Par exemple, une valeur pour le paramètre charSet, comme dans myTest.readMultiByte(22, "iso-8859-01") qui utilise 01 au lieu de 1 pourra éventuellement fonctionner sur votre poste de développement, mais pas sur un autre poste. Sur l’autre ordinateur, l’application utilisera la page de code par défaut du système.

Lit une chaîne multi-octets dans le flux d’octets, en utilisant le jeu de caractères spécifié.
readObject Lit dans le socket un objet codé au format AMF (Action Message Format) sérialisé.Les données à lire sont insuffisantes. EOFErrorflash.errors:EOFErrorUne erreur d’E/S s’est produite dans le socket ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorObjet désérialisé Lit dans le socket un objet codé au format AMF (Action Message Format) sérialisé. ObjectEncodingflash.net.registerClassAlias()readShort Lit un entier de 16 bits signé dans le socket.Les données à lire sont insuffisantes. EOFErrorflash.errors:EOFErrorUne erreur d’E/S s’est produite dans le socket ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorValeur comprise entre -32768 et 32767. int Lit un entier de 16 bits signé dans le socket. readUTFBytes Lit dans le socket le nombre d’octets de données UTF-8 spécifié par le paramètre length et renvoie une chaîne.Les données à lire sont insuffisantes. EOFErrorflash.errors:EOFErrorUne erreur d’E/S s’est produite dans le socket ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorChaîne UTF-8. StringlengthuintNombre d’octets à lire. Lit dans le socket le nombre d’octets de données UTF-8 spécifié par le paramètre length et renvoie une chaîne. readUTF Lit une chaîne UTF-8 dans le socket.Les données à lire sont insuffisantes. EOFErrorflash.errors:EOFErrorUne erreur d’E/S s’est produite dans le socket ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorChaîne UTF-8. String Lit une chaîne UTF-8 dans le socket. La chaîne est supposée comporter un préfixe composé d’un entier court non signé indiquant sa longueur en octets. readUnsignedByte Lit un octet non signé dans le socket.Les données à lire sont insuffisantes. EOFErrorflash.errors:EOFErrorUne erreur d’E/S s’est produite dans le socket ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorValeur comprise entre 0 et 255. uint Lit un octet non signé dans le socket. readUnsignedInt Lit un entier de 32 bits non signé dans le socket.Les données à lire sont insuffisantes. EOFErrorflash.errors:EOFErrorUne erreur d’E/S s’est produite dans le socket ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorValeur comprise entre 0 et 4294967295. uint Lit un entier de 32 bits non signé dans le socket. readUnsignedShort Lit un entier de 16 bits non signé dans le socket.Les données à lire sont insuffisantes. EOFErrorflash.errors:EOFErrorUne erreur d’E/S s’est produite dans le socket ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorValeur comprise entre 0 et 65535. uint Lit un entier de 16 bits non signé dans le socket. writeBoolean Ecrit une valeur booléenne dans le socket.Une erreur d’E/S s’est produite dans le socket ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorvalueBooleanValeur à écrire dans le socket : 1 (true) ou 0 (false). Ecrit une valeur booléenne dans le socket. Cette méthode écrit un seul octet, dont la valeur correspond à 1 (true) ou à 0 (false). flush()writeByte Ecrit un octet dans le socket.Une erreur d’E/S s’est produite dans le socket ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorvalueintValeur à écrire dans le socket. Les 8 bits inférieurs de la valeur sont utilisés. Les 24 bits supérieurs ne sont pas pris en compte. Ecrit un octet dans le socket. flush()writeBytes Ecrit une séquence d’octets extraits du tableau d’octets spécifié.Une erreur d’E/S s’est produite dans le socket ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorSi la valeur du paramètre offset est supérieure à la longueur de l’objet ByteArray spécifiée dans le paramètre bytes ou si la quantité de données spécifiée devant être écrites par offset et length dépasse les données disponibles. RangeErrorRangeErrorbytesflash.utils:ByteArrayObjet ByteArray duquel extraire les données à écrire. offsetuint0Décalage, commençant à zéro, dans l’objet ByteArray bytes auquel l’écriture des données doit commencer. lengthuint0Nombre d’octets à écrire. La valeur par défaut, 0, entraîne l’écriture de l’intégralité de la mémoire tampon, en partant de la valeur spécifiée par le paramètre offset. Ecrit une séquence d’octets extraits du tableau d’octets spécifié. L’écriture commence à la position indiquée par offset.

Si vous omettez le paramètre length, la valeur par défaut, 0, est utilisée et la méthode écrit l’intégralité de la mémoire tampon, en commençant à offset.

Si vous omettez aussi le paramètre offset, toute la mémoire tampon est écrite.

flush()
writeDouble Ecrit dans le socket un nombre à virgule flottante à deux décimales et conforme à IEEE 754.Une erreur d’E/S s’est produite dans le socket ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorvalueNumberValeur à écrire dans le socket. Ecrit dans le socket un nombre à virgule flottante à deux décimales et conforme à IEEE 754. flush()writeFloat Ecrit dans le socket un nombre à virgule flottante à une décimale conforme à IEEE 754.Une erreur d’E/S s’est produite dans le socket ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorvalueNumberValeur à écrire dans le socket. Ecrit dans le socket un nombre à virgule flottante à une décimale conforme à IEEE 754. flush()writeInt Ecrit un entier signé de 32 bits dans le socket.Une erreur d’E/S s’est produite dans le socket ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorvalueintValeur à écrire dans le socket. Ecrit un entier signé de 32 bits dans le socket. flush()writeMultiByte Ecrit une chaîne multi-octets extraite du flux d’octets, en utilisant le jeu de caractères spécifié.valueStringValeur de la chaîne à écrire. charSetStringChaîne désignant le le jeu de caractères à utiliser pour interpréter les octets. Parmi les chaînes de jeu de caractères supportées figurent shift_jis, CN-GB et iso-8859-1. Pour obtenir la liste complète, voir la section Jeux de caractères pris en charge. Ecrit une chaîne multi-octets extraite du flux d’octets, en utilisant le jeu de caractères spécifié. flush()writeObject Ecrit un objet dans le socket au format AMF sérialisé.Une erreur d’E/S s’est produite dans le socket ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorobjectObjet à sérialiser. Ecrit un objet dans le socket au format AMF sérialisé. flush()ObjectEncodingflash.net.registerClassAlias()writeShort Ecrit un entier 16 bits dans le socket.Une erreur d’E/S s’est produite dans le socket ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorvalueintValeur à écrire dans le socket. Ecrit un entier 16 bits dans le socket. Les octets écrits se présentent comme suit :
(v >> 8) & 0xff v & 0xff

Les 16 bits inférieurs du paramètre sont utilisés. Les 16 bits supérieurs ne sont pas pris en compte.

flush()
writeUTFBytes Ecrit une chaîne UTF-8 dans le socket.Une erreur d’E/S s’est produite dans le socket ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorvalueStringChaîne à écrire dans le socket. Ecrit une chaîne UTF-8 dans le socket. flush()writeUTF Ecrit les données suivantes dans le socket : un entier non signé de 16 bits, qui indique, en octets, la longueur de la chaîne UTF-8 spécifiée, suivie de la chaîne elle-même.La longueur est supérieure à 65535. RangeErrorRangeErrorUne erreur d’E/S s’est produite dans le socket ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorvalueStringChaîne à écrire dans le socket. Ecrit les données suivantes dans le socket : un entier non signé de 16 bits, qui indique, en octets, la longueur de la chaîne UTF-8 spécifiée, suivie de la chaîne elle-même.

Avant d’écrire la chaîne, la méthode calcule le nombre d’octets nécessaires pour représenter tous les caractères requis.

flush()
writeUnsignedInt Ecrit un entier non signé de 32 bits dans le socket.Une erreur d’E/S s’est produite dans le socket ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorvalueuintValeur à écrire dans le socket. Ecrit un entier non signé de 32 bits dans le socket. flush()bytesAvailable Nombre d’octets de données disponibles en lecture dans la mémoire tampon d’entrée.uint Nombre d’octets de données disponibles en lecture dans la mémoire tampon d’entrée.

Votre code doit accéder à bytesAvailable pour garantir que les données disponibles sont suffisantes, avant leur lecture à l’aide d’une des méthodes read.

connected Indique si l’objet Socket est actuellement connecté.Boolean Indique si l’objet Socket est actuellement connecté. Un appel de cette propriété renvoie la valeur true si le socket est connecté, false dans le cas contraire. endian Indique l’ordre d’octet des données.StringEndian.BIG_ENDIAN Indique l’ordre d’octet des données. Les valeurs possibles sont les constantes de la classe flash.utils.Endian, Endian.BIG_ENDIAN ou Endian.LITTLE_ENDIAN. flash.utils.EndianlocalAddress Adresse IP à laquelle ce socket est lié sur la machine locale.String Adresse IP à laquelle ce socket est lié sur la machine locale. bind()localPort Port auquel ce socket est lié sur la machine locale.int Port auquel ce socket est lié sur la machine locale. bind()objectEncoding Contrôle la version du format AMF utilisée lors de l’écriture ou de la lecture d’un objet.uint Contrôle la version du format AMF utilisée lors de l’écriture ou de la lecture d’un objet. Classe ObjectEncodingreadObject()writeObject()remoteAddress Adresse IP de la machine distante à laquelle ce socket est connecté.String Adresse IP de la machine distante à laquelle ce socket est connecté.

Vous pouvez utiliser cette propriété pour déterminer l’adresse IP d’un socket client distribué dans un ServerSocketConnectEvent par un objet ServerSocket. Si vous le souhaitez, utilisez la classe DNSResolver pour convertir une adresse IP en un nom de domaine.

connect()ServerSocketServerSocketConnectEventDNSResolver
remotePort Port de la machine distante auquel ce socket est connecté.int Port de la machine distante auquel ce socket est connecté.

Vous pouvez utiliser cette propriété pour déterminer le numéro de port d’un socket client distribué dans un ServerSocketConnectEvent par un objet ServerSocket.

connect()ServerSocketServerSocketConnectEvent
timeout Indique le délai d’attente d’une connexion, en millisecondes.uint Indique le délai d’attente d’une connexion, en millisecondes.

Si la connexion n’est pas établie pendant le délai spécifié, elle échoue. La valeur par défaut est de 20 000 (vingt secondes).

ObjectEncoding La classe ObjectEncoding sert à définir les paramètres de sérialisation des classes qui sérialisent les objets (FileStream, NetStream, NetConnection, SharedObject et ByteArray) afin que celles-ci soient compatibles avec des versions antérieures d’ActionScript.Object La classe ObjectEncoding sert à définir les paramètres de sérialisation des classes qui sérialisent les objets (FileStream, NetStream, NetConnection, SharedObject et ByteArray) afin que celles-ci soient compatibles avec des versions antérieures d’ActionScript.

L’encodage d’objet détermine la manière dont les objets sont représentés au format AMF (Action Message Format). Flash Player utilise AMF pour améliorer l’efficacité des communications entre une application et un serveur distant. Le format AMF code les appels de procédure à distance dans un format binaire compact, qui peut être transféré via HTTP/HTTPS ou le protocole RTMP/RTMPS utilisé par Flash Media Server. Les objets et les valeurs de données sont sérialisés dans ce format binaire, qui est généralement plus compact que d’autres représentations, telles que XML.

Adobe AIR et Flash Player 9 peuvent sérialiser dans deux formats différents : AMF3 et AMF0. AMF3, la sérialisation développée par défaut pour ActionScript 3.0, offre plusieurs avantages par rapport à AMF0, réservée à ActionScript 1.0 et 2.0. AMF3 envoie des données sur le réseau de manière plus efficace que AMF0. AMF3 autorise l’envoi d’objets int et uint en tant qu’entiers et prend en charge des types de données, tels que ByteArray, XML, et IExternalizable, qui sont uniquement disponibles dans ActionScript 3.0. Ce format est uniquement disponible dans ActionScript 3.0 et avec les serveurs utilisant le codage AMF3, tels que Flex 2.

Les classes ByteArray, FileStream, NetConnection, NetStream, SharedObject, Socket et URLStream contiennent la propriété objectEncoding, à laquelle une constante de la classe ObjectEncoding est affectée. Le comportement de la propriété objectEncoding varie en fonction de l’objet. La description de la propriété objectEncoding de chaque classe explique ce comportement en détail.

AMF0 Spécifie que les objets sont sérialisés à l’aide du format AMF (Action Message Format) utilisé par ActionScript 1.0 et 2.0.0uint Spécifie que les objets sont sérialisés à l’aide du format AMF (Action Message Format) utilisé par ActionScript 1.0 et 2.0. AMF3 Spécifie que les objets sont sérialisés à l’aide du format AMF (Action Message Format) utilisé par ActionScript 3.0.3uint Spécifie que les objets sont sérialisés à l’aide du format AMF (Action Message Format) utilisé par ActionScript 3.0. DEFAULT Spécifie le format par défaut (le plus récent) du moteur d’exécution actuel (Flash Player ou AIR). 3uint Spécifie le format par défaut (le plus récent) du moteur d’exécution actuel (Flash Player ou AIR). Le contrôle de l’encodage d’objet étant uniquement disponible dans Flash Player 9 et les versions ultérieures, ainsi que dans Adobe AIR, le format AMF (Action Message Format) le plus récent utilisé est celui d’ActionScript 3.0.

Par exemple, si la propriété objectEncoding d’un objet est définie sur ObjectEncoding.DEFAULT, l’encodage AMF3 est utilisé. Si, à l’avenir, une version ultérieure de Flash Player ou d’Adobe AIR propose une nouvelle version d’AMF et que vous republiez votre contenu, l’application utilisera cette nouvelle version. Faites appel à cette constante uniquement si l’interopérabilité avec les versions antérieures n’a aucune importance.

dynamicPropertyWriter Assure une meilleure maîtrise de la sérialisation des propriétés dynamiques des objets dynamiques.flash.net:IDynamicPropertyWriter Assure une meilleure maîtrise de la sérialisation des propriétés dynamiques des objets dynamiques. Lorsque cette propriété est réglée sur null, sa valeur par défaut, les propriétés dynamiques sont sérialisées à l’aide de code natif, qui les écrit toutes, à l’exception de celles dont la valeur est une fonction.

Cette valeur n’est appelée que pour les propriétés d’un objet dynamique (objets déclarés au sein d’une classe dynamique) ou pour des objets déclarés à l’aide de l’opérateur new.

Cette propriété vous permet d’exclure des propriétés d’objets dynamiques de la sérialisation, d’écrire des valeurs dans les propriétés dynamiques des objets dynamiques ou de créer des propriétés dynamiques pour des objets dynamiques. Pour ce faire, réglez-la sur un objet qui implémente l’interface IDynamicPropertyWriter. Pour plus d’informations, voir l’interface IDynamicPropertyWriter.

IDynamicPropertyWriter
NetStreamAppendBytesAction La classe NetStreamAppendBytesAction est une énumération de constantes que vous pouvez transmettre à la méthode NetStream.appendBytesAction().Object La classe NetStreamAppendBytesAction est une énumération de constantes que vous pouvez transmettre à la méthode NetStream.appendBytesAction().

Deux des constantes indiquent une discontinuité dans l’échelle de temps. Chaque balise FLV possède un horodateur qui indique sa position dans l’échelle de temps. Les horodateurs sont utilisés pour synchroniser la lecture des données vidéo, des données audio et des données de script. Les horodatages pour les balises FLV de même type (données vidéo, audio et de script) ne doivent pas diminuer lors de la progression des balises FLV.

flash.net.NetStream.appendBytesAction()flash.net.NetStream.appendBytes()END_SEQUENCE Indique que les données de flux multimédia sont terminées.endSequenceString Indique que les données de flux multimédia sont terminées. Pour certains codecs, tels que H. 264, l’analyseur d’octets attend que la mémoire tampon se remplisse jusqu’à un certain point avant de démarrer la lecture. Transmettez END_SEQUENCE pour indiquer à l’analyseur d’octets de commencer la lecture immédiatement. RESET_BEGIN Indique une discontinuité dans l’échelle de temps.resetBeginString Indique une discontinuité dans l’échelle de temps. Efface le contenu de la FIFO (composée d’une balise FLV incomplète) et réinitialise l’échelle de temps pour commencer à à la date et à l’heure du prochain message joint. Lors de l’appel suivant de appendBytes(), l’analyseur d’octets attend un en-tête de fichier et démarre au début d’un fichier. RESET_SEEK Indique une discontinuité dans l’échelle de temps.resetSeekString Indique une discontinuité dans l’échelle de temps. Efface le contenu de la FIFO (composée d’une balise FLV incomplète) et réinitialise l’échelle de temps pour commencer à à la date et à l’heure du prochain message joint. Lors de l’appel suivant de appendBytes(), l’analyseur d’octets attend le début d’une balise FLV, comme si vous aviez effectué une recherche dans un emplacement au sein du même FLV, sur une limite de balise.
NetGroupReplicationStrategy La classe NetGroupReplicationStrategy est une énumération des valeurs constantes utilisées pour définir la propriété replicationStrategy de la classe NetGroup.Enumération des valeurs constantes utilisées lors de la définition de la propriété replicationStrategy de la classe NetGroup. Object La classe NetGroupReplicationStrategy est une énumération des valeurs constantes utilisées lors de la définition de la propriété replicationStrategy de la classe NetGroup. flash.net.NetGroup.addWantObjects()flash.net.NetGroup.replicationStrategyLOWEST_FIRST Indique que lors de l’extraction d’objets d’un voisin en vue de répondre à une demande, les objets possédant les numéros d’index les moins élevés sont sollicités en premier.lowestFirstString Indique que lors de l’extraction d’objets d’un voisin en vue de répondre à une demande, les objets possédant les numéros d’index les moins élevés sont sollicités en premier. flash.net.NetGroup.addWantObjects()RAREST_FIRST Indique que lors de l’extraction d’objets d’un voisin en vue de répondre à une demande, les objets possédant le moins de répliques parmi tous les voisins sont sollicités en premier.rarestFirstString Indique que lors de l’extraction d’objets d’un voisin en vue de répondre à une demande, les objets possédant le moins de répliques parmi tous les voisins sont sollicités en premier. NetGroup.addWantObjects()URLLoader La classe URLLoader télécharge des données à partir d’une URL sous forme de texte, de données binaires ou de variables de code URL.flash.events:EventDispatcher La classe URLLoader télécharge des données à partir d’une URL sous forme de texte, de données binaires ou de variables de code URL. Elle est utile pour télécharger des fichiers texte, XML ou d’autres informations destinées à être utilisées dans une application de données dynamique.

Un objet URLLoader télécharge toutes les données d’une URL avant de les mettre à disposition du code dans les applications. Il fournit des notifications sur la progression du téléchargement, que vous pouvez connaître en surveillant les propriétés bytesLoaded et bytesTotal, ainsi que les événements distribués.

Dans le cas de chargements de fichiers vidéo très volumineux, tels que des FLV, des erreurs de mémoire insuffisante peuvent se produire.

Lorsque vous employez cette classe dans Flash Player et dans le contenu de l’application AIR d’un sandbox de sécurité autre que celui de l’application, tenez compte du modèle de sécurité suivant :

  • Un fichier SWF du sandbox local avec système de fichiers risque de ne pas charger des données depuis une ressource située dans le sandbox réseau, ni lui en fournir.
  • Par défaut, le fichier SWF appelant et l’URL chargée doivent se trouver dans le même domaine. Par exemple, un fichier SWF à l’adresse www.adobe.com peut charger uniquement des données provenant de sources situées aussi à l’adresse www.adobe.com. Pour charger des données à partir d’un autre domaine, placez un fichier de régulation d’URL sur le serveur hébergeant les données.

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

L’exemple suivant charge et affiche les données détectées dans un fichier texte local. Il assure également le suivi des informations de gestion des événements.

Remarque : pour exécuter cet exemple, placez un fichier nommé urlLoaderExample.txt dans le même répertoire que votre fichier SWF. Ce fichier ne doit contenir que la ligne de texte suivante : answer=42&question=unknown

Le code de l’exemple effectue les opérations suivantes :

  1. La fonction constructeur crée une occurrence d’URLLoader nommée loader et une occurrence d’URLRequest nommée request, qui contient l’emplacement et le nom du fichier à charger.
  2. L’objet loader est transmis à la méthode configureListeners(), qui ajoute des écouteurs à chacun des événements URLLoader pris en charge.
  3. L’objet request est ensuite transmis à la méthode loader.load(), qui charge le fichier texte.
  4. Lorsque l’URLLoader a terminé de chargé le fichier texte, l’événement Event.COMPLETE se produit et déclenche la méthode completeHandler(). La méthode completeHandler() crée un objet URLVariables à partir du texte chargé depuis le fichier. L’objet URLVariables convertit les paires nom/valeur d’URL codées en propriétés ActionScript pour faciliter la manipulation des données chargées.
package { import flash.display.Sprite; import flash.events.*; import flash.net.*; public class URLLoaderExample extends Sprite { public function URLLoaderExample() { var loader:URLLoader = new URLLoader(); configureListeners(loader); var request:URLRequest = new URLRequest("urlLoaderExample.txt"); try { loader.load(request); } catch (error:Error) { trace("Unable to load requested document."); } } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); } private function completeHandler(event:Event):void { var loader:URLLoader = URLLoader(event.target); trace("completeHandler: " + loader.data); var vars:URLVariables = new URLVariables(loader.data); trace("The answer is " + vars.answer); } private function openHandler(event:Event):void { trace("openHandler: " + event); } private function progressHandler(event:ProgressEvent):void { trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function httpStatusHandler(event:HTTPStatusEvent):void { trace("httpStatusHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } } }
URLRequestURLVariablesURLStreamhttpResponseStatus Distribué si un appel de la méthode load() tente d’accéder aux données via HTTP, et si Adobe AIR est capable de détecter et de renvoyer le code d’état de la requête.flash.events.HTTPStatusEvent.HTTP_RESPONSE_STATUSflash.events.HTTPStatusEvent Distribué si un appel de la méthode load() tente d’accéder aux données via HTTP, et si Adobe AIR est capable de détecter et de renvoyer le code d’état de la requête. load()httpStatus Distribué si un appel de la méthode URLLoader.load() tente d’accéder aux données via HTTP.flash.events.HTTPStatusEvent.HTTP_STATUSflash.events.HTTPStatusEvent Distribué si un appel de la méthode URLLoader.load() tente d’accéder aux données via HTTP. Dans le cas de contenu s’exécutant dans Flash Player, cet événement n’est distribué que si l’environnement Flash Player actif est capable de détecter et de renvoyer le code d’état de la requête (certains environnements de navigateur ne sont pas capables de fournir cette information). Vous remarquerez que l’événement httpStatus (le cas échéant) est envoyé avant (et en complément de) tout événement complete ou error. URLLoader.load()securityError Distribué si un appel de la méthode URLLoader.load() tente de charger des données d’un serveur en dehors d’un sandbox de sécurité.flash.events.SecurityErrorEvent.SECURITY_ERRORflash.events.SecurityErrorEvent Distribué si un appel de la méthode URLLoader.load() tente de charger des données d’un serveur en dehors d’un sandbox de sécurité. Egalement distribué si un appel de la méthode URLLoader.load() tente de charger un fichier SWZ, si le certificat n’est pas valide ou si la chaîne digest ne correspond pas au composant. URLLoader.load()ioError Distribué si un appel de la méthode URLLoader.load() provoque une erreur fatale qui met fin au téléchargement.flash.events.IOErrorEvent.IO_ERRORflash.events.IOErrorEvent Distribué si un appel de la méthode URLLoader.load() provoque une erreur fatale qui met fin au téléchargement. URLLoader.load()progress Distribué à la réception des données au fur et à mesure du téléchargement.flash.events.ProgressEvent.PROGRESSflash.events.ProgressEvent Distribué à la réception des données au fur et à mesure du téléchargement.

Notez qu’avec un objet URLLoader, il est impossible d’accéder aux données avant la fin de leur téléchargement. L’événement progress indique donc uniquement la progression du téléchargement. Pour accéder aux données avant la fin de leur téléchargement, utilisez un objet URLStream.

URLLoader.load()
complete Distribué après le décodage de toutes les données reçues et leur placement dans la propriété data de l’objet URLLoader.flash.events.Event.COMPLETEflash.events.Event Distribué après le décodage de toutes les données reçues et leur placement dans la propriété data de l’objet URLLoader. Il est possible d’accéder aux données reçues une fois cet événement distribué. URLLoader.load()open Distribué lorsque l’opération de téléchargement commence suite à un appel de la méthode URLLoader.load().flash.events.Event.OPENflash.events.EventDistribué lorsque l’opération de téléchargement commence. Distribué lorsque l’opération de téléchargement commence suite à un appel de la méthode URLLoader.load(). URLLoader.load()URLLoader Crée un objet URLLoader.requestflash.net:URLRequestnullObjet URLRequest indiquant l’URL à télécharger. Si ce paramètre n’est pas spécifié, aucune opération de chargement ne commence. S’il est spécifié, l’opération de chargement commence immédiatement (voir l’entrée load pour plus d’informations). Crée un objet URLLoader. URLLoader.load()addEventListener Enregistre un objet écouteur d’événement auprès d’un objet EventDispatcher afin que l’écouteur soit averti d’un événement.typeStringType d’événement. listenerFunctionFonction d’auditeur qui traite l’événement. Cette fonction doit accepter un objet Event comme paramètre unique et ne rien renvoyer, comme illustré ci-dessous : function(evt:Event):void

Le nom de cette fonction n’a aucune importance.

useCaptureBooleanfalse Détermine si l’écouteur est actif pendant la phase de capture ou pendant les phases cible et de propagation. Si la propriété useCapture est définie sur true, l’écouteur traite l’événement uniquement pendant la phase de capture et non pendant les phases cible et de propagation. Si la propriété useCapture est définie sur false, l’écouteur traite l’événement uniquement pendant les phases cible et de propagation. Pour écouter l’événement dans les trois phases, appelez addEventListener à deux reprises, une première fois en définissant useCapture sur true, puis une nouvelle fois en définissant useCapture sur false. priorityint0Niveau de priorité de l’écouteur d’événement. La priorité est indiquée par un entier signé de 32 bits. Plus le nombre est élevé, plus la priorité est élevée. Tous les écouteurs dont la priorité correspond à n sont traités avant les écouteurs dotés de la priorité n -1. Les écouteurs dont la priorité est identique sont traités dans l’ordre où ils ont été ajoutés. La priorité par défaut est 0. useWeakReferenceBooleanfalseDétermine si la référence à l’écouteur est forte ou faible. Une référence forte (valeur par défaut) empêche le nettoyage de votre écouteur, Cela n’est pas le cas avec une référence faible.

Les fonctions de membres de niveau classe n’étant pas soumises au nettoyage, vous pouvez définir useWeakReference sur true pour ces fonctions. Si vous définissez useWeakReference sur true pour un écouteur correspondant à une fonction imbriquée interne, la fonction sera nettoyée et ne sera donc pas permanente. Si vous créez des références à la fonction interne (enregistrée dans une autre variable), celle-ci n’est pas nettoyée et reste permanente.

Enregistre un objet écouteur d’événement auprès d’un objet EventDispatcher afin que l’écouteur soit averti d’un événement. Vous pouvez enregistrer les écouteurs d’événement dans tous les nœuds de la liste d’affichage pour un type spécifique d’événement, de phase et de priorité.

Après l’enregistrement d’un écouteur d’événement, vous ne pouvez plus modifier sa priorité par d’autres appels de addEventListener(). Pour modifier la priorité d’un écouteur, vous devez d’abord appeler removeListener(). Vous pouvez ensuite réenregistrer l’écouteur avec le nouveau niveau de priorité.

N’oubliez pas qu’une fois l’écouteur enregistré, tous les prochains appels de addEventListener() avec une valeur type ou useCapture différente entraîneront la création d’un autre enregistrement d’écouteur. Si, par exemple, vous enregistrez un écouteur dans lequel la propriété useCapture est définie sur true, il écoute uniquement pendant la phase de capture. Si vous appelez addEventListener() à l’aide du même objet écouteur, mais en définissant useCapture sur false, vous obtenez deux écouteurs distincts : l’un qui écoute pendant la phase de capture et l’autre qui écoute pendant les phases cible et de propagation vers le haut (bubbling).

Il est impossible d’enregistrer un écouteur d’événement uniquement pour la phase cible ou la phase de propagation vers le haut. Ces deux phases sont associées pendant l’enregistrement car la propagation vers le haut s’applique uniquement aux ancêtres du nœud cible.

Si vous n’avez plus besoin d’un écouteur d’événements, supprimez-le en appelant removeEventListener(), afin d’éviter tout problème de mémoire. Les écouteurs d’événement ne sont pas automatiquement supprimés de la mémoire, car le nettoyeur de mémoire ne supprime pas l’écouteur tant que l’objet de distribution existe (à moins que le paramètre useWeakReference ne soit défini sur true).

Lors de la copie d’une occurrence d’EventDispatcher, les écouteurs d’événement qui lui sont associés ne sont pas pris en compte (si le nouveau nœud nécessite un écouteur d’événement, vous devez associer celui-ci après la création du nœud). Toutefois, si vous déplacez une occurrence d’EventDispatcher, les écouteurs d’événement qui lui sont associés la suivent.

Si un écouteur d’événement est enregistré sur un nœud alors qu’un événement est en cours de traitement sur ce nœud, l’écouteur n’est pas déclenché pendant la phase actuelle, mais il peut l’être pendant une phase ultérieure du flux d’événements, telle que la phase de propagation vers le haut (bubbling).

Si un écouteur d’événement est supprimé d’un nœud sur lequel un événement est en cours de traitement, il est cependant déclenché par les actions en cours. Une fois supprimé, l’écouteur d’événement n’est plus jamais appelé (à moins d’être réenregistré à des fins de traitement ultérieur).

close Ferme l’opération de chargement en cours. Ferme l’opération de chargement en cours. Toute opération de chargement en cours prend immédiatement fin. Si aucune URL n’est en cours de transmission, une erreur de flux non valide est renvoyée. load Envoie et charge les données à partir de l’URL spécifiée.Les objets URLRequest.requestHeader ne devraient pas contenir certains en-têtes de requête HTTP interdits. Pour plus d’informations, voir la description de la classe URLRequestHeader. ArgumentErrorArgumentErrorCette erreur peut se produire pour les raisons suivantes : 1) Flash Player ou Adobe AIR ne peut pas convertir le paramètre URLRequest.data du format UTF8 au format MBCS. Cette erreur est concernée si l’objet URLRequest transmis à la méthode load() est configuré pour exécuter une opération GET et si System.useCodePage est réglé sur true. 2) Flash Player ou Adobe AIR ne peut pas allouer de mémoire aux données POST. Cette erreur est concernée si l’objet URLRequest transmis à load est configuré pour exécuter une opération POST. MemoryErrorflash.errors:MemoryErrorLes fichiers non approuvés au niveau local ne peuvent pas communiquer avec Internet. Pour contourner ce problème, reclassifiez le fichier en tant que fichier local avec accès au réseau ou en tant que fichier approuvé. SecurityErrorSecurityErrorSi vous tentez de vous connecter à un port généralement réservé. 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. SecurityErrorSecurityErrorLa valeur du paramètre de requête ou de la propriété URLRequest.url de l’objet URLRequest transmis est null. TypeErrorTypeErrorrequestflash.net:URLRequestObjet URLRequest indiquant l’URL à télécharger. Envoie et charge les données à partir de l’URL spécifiée. Les données peuvent être reçues sous forme de texte, de données binaires brutes ou de variables d’URL codées, selon la valeur définie pour la propriété dataFormat. Vous remarquerez que la valeur par défaut de la propriété dataFormat correspond à text. Si vous souhaitez envoyer des données à l’URL spécifiée, définissez la propriété data dans l’objet URLRequest.

Remarque : si un fichier en cours de chargement contient des caractères non-ASCII (comme dans les langues autres que l’anglais), nous vous recommandons d’enregistrer le fichier avec codage UTF-8 ou UTF-16, plutôt que sous un format non-Unicode, ASCII par exemple.

Un fichier SWF du sandbox local avec système de fichiers risque de ne pas charger des données depuis une ressource située dans le sandbox réseau, ni lui en fournir.

Par défaut, le fichier SWF appelant et l’URL chargée doivent se trouver dans le même domaine. Par exemple, un fichier SWF à l’adresse www.adobe.com peut charger uniquement des données provenant de sources situées aussi à l’adresse www.adobe.com. Pour charger des données à partir d’un autre domaine, placez un fichier de régulation d’URL sur le serveur hébergeant les données.

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.

Dans Flash Player versions 10 et ultérieures, si vous utilisez un Content-Type en plusieurs parties (par exemple « multipart/form-data ») qui contient un chargement (indiqué par un paramètre « filename » dans un en-tête « content-disposition » au sein du corps POST), l’opération POST est soumise aux règles de sécurité appliquées aux chargements :

  • L’opération POST doit être effectuée en réponse à l’action d’un utilisateur, comme un clic de souris ou la pression d’une touche.
  • Si l’opération POST se fait entre plusieurs domaines (la cible POST ne se trouve pas sur le même serveur que le fichier SWF qui envoie la demande POST), le serveur cible doit fournir un fichier de régulation d’URL qui permette l’accès interdomaines.

Par ailleurs, la syntaxe de tous les Content-Type en plusieurs parties doit être correcte (selon la norme RFC2046). Si la syntaxe s’avère incorrecte, l’opération POST est soumise aux règles de sécurité appliquées aux chargements.

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

Dans l’exemple suivant, un fichier XML est chargé et le contenu des premiers arguments de son élément s’affiche dans un champ de texte.

Un objet URLRequest est créé pour identifier l’emplacement du fichier XML, qui pour cet exemple est dans le même répertoire que le fichier SWF. Le fichier est chargé dans un bloc try...catch pour capturer toute erreur pouvant survenir (ici nous capturons les erreurs SecurityError). Si un événement IO_ERROR survient, la méthode errorHandler() est invoquée et écrit un message d’erreur dans le champ de texte xmlTextField. Une fois le fichier XML reçu et placé dans la propriété de données de l’objet URLLoader loader, l’événement Event.COMPLETE est distribué et la méthode loaderCompleteHandler() est invoquée.

Dans la méthode loaderCompleteHandler(), un bloc try...catch est utilisé pour capturer toute erreur d’analyse pouvant survenir lors de la conversion des données chargées depuis le fichier en objet XML. La méthode readNodes() passe de façon récursive à travers tous les éléments des noeuds du document XML et ajoute le champ de texte xmlTextField avec la liste des premiers attributs de tous les éléments.

package { import flash.display.Sprite; import flash.events.Event; import flash.net.URLLoader; import flash.net.URLRequest; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.xml.*; import flash.events.IOErrorEvent; public class URLLoader_loadExample extends Sprite { private var xmlTextField:TextField = new TextField(); private var externalXML:XML; private var loader:URLLoader; public function URLLoader_loadExample() { var request:URLRequest = new URLRequest("xmlFile.xml"); loader = new URLLoader(); try { loader.load(request); } catch (error:SecurityError) { trace("A SecurityError has occurred."); } loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); loader.addEventListener(Event.COMPLETE, loaderCompleteHandler); xmlTextField.x = 10; xmlTextField.y = 10; xmlTextField.background = true; xmlTextField.autoSize = TextFieldAutoSize.LEFT; addChild(xmlTextField); } private function loaderCompleteHandler(event:Event):void { try { externalXML = new XML(loader.data); readNodes(externalXML); } catch (e:TypeError) { trace("Could not parse the XML file."); } } private function readNodes(node:XML):void { for each (var element:XML in node.elements()) { xmlTextField.appendText(element.attributes()[0] + "\n"); readNodes(element); } } private function errorHandler(e:IOErrorEvent):void { xmlTextField.text = "Had problem loading the XML File."; } } }
URLRequestHeaderURLRequest.requestHeadersURLRequest.dataURLRequest.digestcompleteflash.events:EventDistribué après le chargement effectif de données. Distribué après le chargement effectif de données.httpStatusflash.events:HTTPStatusEventSi l’accès s’effectue via HTTP et que l’environnement Flash Player actuel permet l’obtention des codes d’état, il se peut que vous receviez ces événements en plus des événements complete ou error. Si l’accès s’effectue via HTTP et que l’environnement Flash Player actuel permet l’obtention des codes d’état, il se peut que vous receviez ces événements en plus des événements complete ou error.ioErrorflash.events:IOErrorEventL’opération de chargement n’a pu se terminer. L’opération de chargement n’a pu se terminer.progressflash.events:ProgressEventDistribué à la réception des données au fur et à mesure du téléchargement. Distribué à la réception des données au fur et à mesure du téléchargement.securityErrorflash.events:SecurityErrorEventUne opération de chargement a tenté d’extraire des données à partir d’un serveur situé en dehors du sandbox de sécurité de l’appelant. Vous pouvez contourner le problème en utilisant un fichier de régulation au niveau du serveur. Une opération de chargement a tenté d’extraire des données d’un serveur situé hors du sandbox de sécurité de l’appelant.securityErrorflash.events:SecurityErrorEventUne opération de chargement a tenté de charger un fichier SWZ (un composant de la plateforme Adobe), mais le certificat n’est pas valide ou le digest ne correspond pas au composant. Une opération de chargement a tenté de charger un fichier SWZ (un composant de la plateforme Adobe), mais le certificat n’est pas valide ou le digest ne correspond pas au composant.openflash.events:EventDistribué au commencement d’une opération de chargement. Distribué au commencement d’une opération de chargement.httpResponseStatusflash.events:HTTPStatusEventDistribué si un appel de la méthode load() tente d’accéder aux données via HTTP et si Adobe AIR est capable de détecter et de renvoyer le code d’état de la requête. Distribué si un appel de la méthode load() tente d’accéder aux données via HTTP, et si Adobe AIR est capable de détecter et de renvoyer le code d’état de la requête.
bytesLoaded Indique le nombre d’octets chargés jusqu’ici au cours du chargement.0uint Indique le nombre d’octets chargés jusqu’ici au cours du chargement. bytesTotal Indique le nombre total d’octets dans les données téléchargées.0uint Indique le nombre total d’octets dans les données téléchargées. Cette propriété contient 0 lorsque le chargement est en cours et est renseignée au terme de ce dernier. Egalement, si un en-tête Content-Length est manquant, bytesTotal sera indéterminé. dataFormat Contrôle si les données téléchargées sont reçues sous forme de texte (URLLoaderDataFormat.TEXT), de données binaires brutes (URLLoaderDataFormat.BINARY) ou de variables de code URL (URLLoaderDataFormat.VARIABLES).textStringURLLoaderDataFormat.TEXT Contrôle la méthode de réception des données téléchargées. Contrôle si les données téléchargées sont reçues sous forme de texte (URLLoaderDataFormat.TEXT), de données binaires brutes (URLLoaderDataFormat.BINARY) ou de variables d’URL codées (URLLoaderDataFormat.VARIABLES).

Si la valeur de la propriété dataFormat est URLLoaderDataFormat.TEXT, les données reçues représentent une chaîne qui contient le texte du fichier chargé.

Si la valeur de la propriété dataFormat est URLLoaderDataFormat.BINARY, les données reçues représentent un objet ByteArray qui contient les données binaires brutes.

Si la valeur de la propriété dataFormat est URLLoaderDataFormat.VARIABLES, les données reçues représentent un objet URLVariables qui contient les variables d’URL codées.

L’exemple suivant indique comment charger des fichiers texte externes. Utilisez les classes URLRequest et URLLoader, puis écoutez l’événement complete. Exemple fourni par ActionScriptExamples.com. var PATH:String = "lorem.txt"; var urlRequest:URLRequest = new URLRequest(PATH); var urlLoader:URLLoader = new URLLoader(); urlLoader.dataFormat = URLLoaderDataFormat.TEXT; // default urlLoader.addEventListener(Event.COMPLETE, urlLoader_complete); urlLoader.load(urlRequest); function urlLoader_complete(evt:Event):void { textArea.text = urlLoader.data; }
URLLoaderDataFormat
data Données reçues par le biais de l’opération de chargement. Données reçues par le biais de l’opération de chargement. Cette propriété n’est renseignée qu’à la fin du chargement. Le format des données varie en fonction du paramétrage de la propriété dataFormat :

Si la propriété dataFormat est URLLoaderDataFormat.TEXT, les données reçues représentent une chaîne qui contient le texte du fichier chargé.

Si la propriété dataFormat est URLLoaderDataFormat.BINARY, les données reçues représentent un objet ByteArray qui contient des données binaires brutes.

Si la propriété dataFormat est URLLoaderDataFormat.VARIABLES, les données reçues représentent un objet URLVariables qui contient des variables d’URL codées.

L’exemple suivant indique comment charger un fichier texte externe avec des variables codées dans l’URL dans un document ActionScript 3.0 à l’aide de la classe URLLoader et en définissant la propriété dataFormat sur la constante URLLoaderDataFormat.VARIABLES ("variables"). Exemple fourni par ActionScriptExamples.com. //params.txt is a local file that includes: firstName=Tom&lastName=Jones var lbl:TextField = new TextField(); var urlRequest:URLRequest = new URLRequest("params.txt"); var urlLoader:URLLoader = new URLLoader(); urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES; urlLoader.addEventListener(Event.COMPLETE, urlLoader_complete); urlLoader.load(urlRequest); function urlLoader_complete(evt:Event):void { lbl.text = urlLoader.data.lastName + "," + urlLoader.data.firstName; addChild(lbl); }
URLLoaderDataFormatURLLoader.dataFormat
IDynamicPropertyOutput Cette interface contrôle la sérialisation des propriétés dynamiques des objets dynamiques. Cette interface contrôle la sérialisation des propriétés dynamiques des objets dynamiques. Utilisez cette interface avec l’interface IDynamicPropertyWriter et la propriété ObjectEncoding.dynamicPropertyWriter. IDynamicPropertyWriterObjectEncoding.dynamicPropertyWriterwriteDynamicProperty Ajoute une propriété dynamique à la sortie binaire d’un objet sérialisé.nameStringNom de la propriété. Vous pouvez utiliser ce paramètre soit pour indiquer le nom d’une propriété existante de l’objet dynamique, soit pour créer une nouvelle propriété. valueValeur à écrire dans la propriété spécifiée. Ajoute une propriété dynamique à la sortie binaire d’un objet sérialisé. Lorsque l’objet est ensuite lu (à l’aide d’une méthode telle que readObject), il contient la nouvelle propriété. Cette méthode vous permet d’exclure des propriétés d’objets dynamiques de la sérialisation, d’écrire des valeurs dans les propriétés des objets dynamiques ou de créer de nouvelles propriétés pour des objets dynamiques. IDynamicPropertyWriterObjectEncoding.dynamicPropertyWriterNetStreamPlayOptions La classe NetStreamPlayOptions spécifie les diverses options pouvant être transmises à la méthode NetStream.play2().La classe NetStreamPlayOptions spécifie les diverses options pouvant être transmises à la méthode NetStream.play2(). flash.events:EventDispatcher La classe NetStreamPlayOptions spécifie les diverses options pouvant être transmises à la méthode NetStream.play2(). Vous pouvez transmettre un objet NetStreamPlayOptions à play2(), et les propriétés de la classe spécifient les différentes options. La principale utilisation de cette classe consiste à implémenter dynamiquement des transitions entre des flux, soit pour basculer vers d’autres flux de même contenu codés avec des vitesses de transmission différentes, soit pour basculer vers un autre contenu dans une liste de lecture. NetStreamPlayOptions Crée un objet NetStreamPlayOptions pour spécifier les options transmises à la méthode NetStream.play2(). Crée un objet NetStreamPlayOptions pour spécifier les options transmises à la méthode NetStream.play2(). NetStream.play2()len Durée de la lecture, en secondes, du flux spécifié dans streamName.NumberDurée de la lecture, en secondes, du flux spécifié dans streamName. Durée de la lecture, en secondes, du flux spécifié dans streamName. La valeur par défaut est -1, et signifie que Flash Player lit un flux en direct jusqu’à ce qu’il ne soit plus disponible ou lit un flux enregistré jusqu’à la fin. Si vous transmettez 0 pour len, Flash Player lit l’unique image située à start secondes du début d’un flux enregistré (en supposant que start est égal ou supérieur à 0).

Si vous transmettez un nombre positif pour len, Flash Player lit un flux en direct pendant len secondes lorsqu’il devient disponible, ou lit un flux enregistré pendant len secondes (si le flux se termine avant len secondes, la lecture prend fin en même temps que le flux).

Si vous transmettez un nombre négatif autre que -1 pour len, Flash Player interprète la valeur comme s’il s’agissait de -1.

NetStream.play()NetStream.play2()start
offset Durée, en secondes, à laquelle doit être effectué le passage à un nouveau flux lors de la lecture du flux.Number Durée, en secondes, à laquelle doit être effectué le passage à un nouveau flux lors de la lecture du flux. Le paramètre offset est utilisé lors d’un appel de la méthode NetStream.play2() avec le mode de transition NetStreamPlayTransitions.Switch. Flash Media Server recherche le point de basculement le plus proche après la durée de décalage spécifiée, et commence la diffusion en continu du nouveau flux à partir de ce point.

Commutation rapide

Lorsque cette propriété est spécifiée, Flash Media Server met immédiatement fin au flux actuel et commence la diffusion en continu du nouveau flux à partir de la position d’index spécifiée, sans attendre de trouver une image-clé. Toutes les données suivant le décalage déjà mises en mémoire tampon à partir d’un flux précédent sont vidées. Cette technique permet de basculer vers un nouveau flux plus rapidement que la commutation standard, car il n’est pas nécessaire de vider les données d’un flux précédent mises en mémoire tampon.

La valeur par défaut de offset est -1, qui correspond au mode de commutation rapide. Dans ce mode, la commutation se produit à la première image-clé disponible après netstream.time + 3, c’est-à-dire environ 3 secondes plus tard que le point où s’est arrêtée la lecture.

La valeur de décalage doit être supérieure à la durée de lecture actuelle (NetStream.time). Si cette valeur est inférieure, un événement d’état NetStream.Play.Failed est envoyé.

Pour plus d’informations, voir la section "Commutation rapide entre les flux" du Guide du développeur d’Adobe Flash Media Server.

startNetStream.play()NetStream.play2()NetStream.timeNetStreamPlayTransitions.SWITCH
oldStreamName Nom de l’ancien flux ou du flux à partir duquel s’effectue la transition.String Nom de l’ancien flux ou du flux à partir duquel s’effectue la transition. Lorsque la méthode NetStream.play2() n’est utilisée que pour lire un flux (sans effectuer de transition), la valeur de cette propriété doit être null ou undefined. Sinon, spécifiez le flux à partir duquel s’effectue la transition. streamNameNetStream.play()NetStream.play2()start Instant de départ, en secondes, pour streamName.NumberInstant de départ, en secondes, pour streamName. Instant de départ, en secondes, pour streamName. Les valeurs valides sont -2, -1 et 0.

La valeur par défaut de start est -2, ce qui signifie que Flash Player tente d’abord de lire le flux en direct spécifié dans streamName. Lorsque aucun flux en direct portant ce nom n’est détecté, Flash Player lit le flux enregistré spécifié dans streamName. Lorsque aucun flux en direct ou enregistré n’est détecté, Flash Player ouvre un flux en direct nommé streamName, même lorsque personne ne publie sur ce dernier. Lorsque quelqu’un démarre une publication sur ce flux, Flash Player commence à le lire.

Si vous transmettez -1 pour start, Flash Player ne lit que le flux en direct spécifié dans streamName. Lorsque aucun flux en direct n’est détecté, Flash Player l’attend indéfiniment si len est défini sur -1 ; si len est défini sur une autre valeur, Flash Player attend pendant len secondes avant de commencer la lecture du prochain élément dans la liste.

Si vous transmettez 0 ou un nombre positif pour start, Flash Player lit uniquement un flux enregistré nommé streamName, en commençant à start secondes à partir du début du flux. Si aucun flux enregistré n’est détecté, Flash Player commence immédiatement la lecture du prochain élément dans la liste de lecture.

Si vous transmettez un nombre négatif autre que -1 ou -2 pour start, Flash Player interprète la valeur comme s’il s’agissait de -2.

NetStream.play()NetStream.play2()len
streamName Nom du nouveau flux vers lequel doit s’effectuer la transition ou à lire.String Nom du nouveau flux vers lequel doit s’effectuer la transition ou à lire. Lorsque oldStreamName est null ou undefined, un appel à NetStream.play2() commence simplement la lecture de streamName. Si oldStreamName est spécifié, un appel à NetStream.play2() entraîne une transition de oldStreamName vers streamName avec le mode de transition spécifié dans la propriété transition. oldStreamNameNetStream.play()NetStream.play2()transition Mode dans lequel le streamName est lu ou transité vers.StringMode dans lequel le streamName est lu ou transité vers. Mode dans lequel le streamName est lu ou transité vers. Les valeurs possibles sont des constantes de la classe NetStreamPlayTransitions. Selon si la méthode Netstream.play2() est appelée pour lire ou faire transiter un flux, le mode de transition entraîne des comportement différents. Pour plus d’informations sur les modes de transition, voir la classe NetStreamPlayTransitions. NetStreamPlayTransitionsNetStream.play2()
NetStreamMulticastInfo La classe NetStreamMulticastInfo spécifie les diverses statistiques de qualité de service (QoS) liées à la transmission sous-jacente d’un flux RTMFP homologue à homologue et d’un flux de multidiffusion IP d’un objet NetStream.Object La classe NetStreamMulticastInfo spécifie les diverses statistiques de qualité de service (QoS) liées à la transmission sous-jacente d’un flux RTMFP homologue à homologue et d’un flux de multidiffusion IP d’un objet NetStream. Un objet NetStreamMulticastInfo est renvoyé par la propriété NetStream.multicastInfo.

Les propriétés qui renvoient des nombres représentent des totaux calculés depuis le début du flux en multidiffusion. Ces types de propriétés incluent le nombre d’octets multimédias transmis ou le nombre de messages d’un fragment multimédia reçus. Les propriétés correspondant à des débits représentent un instantané du débit actuel dont la moyenne est établie sur quelques secondes. Ces types de propriétés incluent le débit auquel un nœud local reçoit les données.

Pour afficher la liste de valeurs contenues dans l’objet NetStreamMulticastInfo, utilisez la méthode NetStreamMulticastInfo.toString().

toString()flash.net.NetStream.multicastInfotoString Renvoie une chaîne répertoriant les propriétés de l’objet NetStreamMulticastInfo.Chaîne contenant les valeurs des propriétés de l’objet NetStreamMulticastInfo. String Renvoie une chaîne répertoriant les propriétés de l’objet NetStreamMulticastInfo. bytesPushedFromPeers Spécifie le nombre d’octets multimédias envoyés par les homologues et reçus par le nœud local.Number Spécifie le nombre d’octets multimédias envoyés par les homologues et reçus par le nœud local. bytesRequestedFromPeersfragmentsPushedFromPeersfragmentsRequestedFromPeersbytesPushedToPeers Spécifie le nombre d’octets multimédias que le nœud local a envoyé aux homologues.Number Spécifie le nombre d’octets multimédias que le nœud local a envoyé aux homologues. bytesRequestedByPeersfragmentsPushedToPeersfragmentsRequestedByPeersbytesReceivedFromIPMulticast Spécifie le nombre d’octets multimédias que le nœud local a reçu de la multidiffusion IP.Number Spécifie le nombre d’octets multimédias que le nœud local a reçu de la multidiffusion IP. bytesReceivedFromServerfragmentsReceivedFromIPMulticastfragmentsReceivedFromServerreceiveDataBytesPerSecondFromIPMulticastbytesReceivedFromServer Spécifie le nombre d’octets multimédias que le nœud local a reçu du serveur.Number Spécifie le nombre d’octets multimédias que le nœud local a reçu du serveur. bytesReceivedFromIPMulticastfragmentsReceivedFromIPMulticastfragmentsReceivedFromServerreceiveDataBytesPerSecondFromServerbytesRequestedByPeers Spécifie le nombre d’octets multimédias que le nœud local a envoyé aux homologues après que ceux-ci ont sollicité des fragments spécifiques.Number Spécifie le nombre d’octets multimédias que le nœud local a envoyé aux homologues après que ceux-ci ont sollicité des fragments spécifiques. bytesPushedToPeersfragmentsPushedToPeersfragmentsRequestedByPeersbytesRequestedFromPeers Spécifie le nombre d’octets multimédias que le nœud local a sollicité et reçu des homologues.Number Spécifie le nombre d’octets multimédias que le nœud local a sollicité et reçu des homologues. bytesPushedFromPeersfragmentsPushedFromPeersfragmentsRequestedFromPeersfragmentsPushedFromPeers Spécifie le nombre de messages de fragments multimédias ayant été envoyés aux homologues et reçus par le nœud local.Number Spécifie le nombre de messages de fragments multimédias ayant été envoyés aux homologues et reçus par le nœud local. bytesPushedFromPeersbytesRequestedFromPeersfragmentsRequestedFromPeersfragmentsPushedToPeers Spécifie le nombre de messages de fragments multimédias que le nœud local a envoyé aux homologues.Number Spécifie le nombre de messages de fragments multimédias que le nœud local a envoyé aux homologues. bytesPushedToPeersbytesRequestedByPeersfragmentsRequestedByPeersfragmentsReceivedFromIPMulticast Spécifie le nombre de messages de fragments multimédias que le nœud local a reçu de la multidiffusion IP.Number Spécifie le nombre de messages de fragments multimédias que le nœud local a reçu de la multidiffusion IP. bytesReceivedFromIPMulticastbytesReceivedFromServerfragmentsReceivedFromServerreceiveDataBytesPerSecondFromIPMulticastfragmentsReceivedFromServer Spécifie le nombre de messages de fragments multimédias que le nœud local a reçu du serveur.Number Spécifie le nombre de messages de fragments multimédias que le nœud local a reçu du serveur. bytesReceivedFromIPMulticastbytesReceivedFromServerfragmentsReceivedFromIPMulticastreceiveDataBytesPerSecondFromServerfragmentsRequestedByPeers Spécifie le nombre de messages de fragments multimédias que le nœud local a envoyé aux homologues après que ceux-ci ont sollicité des fragments spécifiques.Number Spécifie le nombre de messages de fragments multimédias que le nœud local a envoyé aux homologues après que ceux-ci ont sollicité des fragments spécifiques. bytesPushedToPeersbytesRequestedByPeersfragmentsPushedToPeersfragmentsRequestedFromPeers Spécifie le nombre de messages de fragments multimédias que le nœud local a sollicité et reçu des homologues.Number Spécifie le nombre de messages de fragments multimédias que le nœud local a sollicité et reçu des homologues. bytesPushedFromPeersbytesRequestedFromPeersfragmentsPushedFromPeersreceiveControlBytesPerSecond Spécifie le débit, en octets par seconde, utilisé lorsque le nœud local reçoit les messages de surcharge de contrôle envoyés par les homologues.Number Spécifie le débit, en octets par seconde, utilisé lorsque le nœud local reçoit les messages de surcharge de contrôle envoyés par les homologues. receiveDataBytesPerSecondreceiveDataBytesPerSecondFromServerreceiveDataBytesPerSecondFromIPMulticastsendControlBytesPerSecondreceiveDataBytesPerSecondFromIPMulticast Spécifie le débit, en octets par seconde, utilisé lorsque le nœud local reçoit les données de la multidiffusion IP.Number Spécifie le débit, en octets par seconde, utilisé lorsque le nœud local reçoit les données de la multidiffusion IP. receiveControlBytesPerSecondreceiveDataBytesPerSecondreceiveDataBytesPerSecondFromServersendDataBytesPerSecondreceiveDataBytesPerSecondFromServer Spécifie le débit, en octets par seconde, utilisé lorsque le nœud local reçoit les données multimédias envoyées par le serveur.Number Spécifie le débit, en octets par seconde, utilisé lorsque le nœud local reçoit les données multimédias envoyées par le serveur. receiveControlBytesPerSecondreceiveDataBytesPerSecondreceiveDataBytesPerSecondFromIPMulticastsendDataBytesPerSecondreceiveDataBytesPerSecond Spécifie le débit, en octets par seconde, utilisé lorsque le nœud local reçoit les données multimédias envoyées par les homologues, par le serveur et en multidiffusion IP.Number Spécifie le débit, en octets par seconde, utilisé lorsque le nœud local reçoit les données multimédias envoyées par les homologues, par le serveur et en multidiffusion IP. receiveControlBytesPerSecondreceiveDataBytesPerSecondFromIPMulticastreceiveDataBytesPerSecondFromServersendDataBytesPerSecondsendControlBytesPerSecondToServer Spécifie le débit, en octets par seconde, utilisé lorsque le nœud local envoie des messages de surcharge de contrôle au serveur.Number Spécifie le débit, en octets par seconde, utilisé lorsque le nœud local envoie des messages de surcharge de contrôle au serveur. receiveDataBytesPerSecondFromServersendControlBytesPerSecondsendDataBytesPerSecondsendControlBytesPerSecond Spécifie le débit, en octets par seconde, utilisé lorsque le nœud local envoie des messages de surcharge de contrôle aux homologues et au serveur.Number Spécifie le débit, en octets par seconde, utilisé lorsque le nœud local envoie des messages de surcharge de contrôle aux homologues et au serveur. receiveControlBytesPerSecondsendControlBytesPerSecondToServersendDataBytesPerSecondsendDataBytesPerSecond Spécifie le débit, en octets par seconde, utilisé lorsque le nœud local envoie les données multimédias aux homologues.Number Spécifie le débit, en octets par seconde, utilisé lorsque le nœud local envoie les données multimédias aux homologues. receiveDataBytesPerSecondsendControlBytesPerSecondsendControlBytesPerSecondToServer
NetworkInfo La classe NetworkInfo fournit des informations sur les interfaces réseau d’un ordinateur.flash.events:EventDispatcher La classe NetworkInfo fournit des informations sur les interfaces réseau d’un ordinateur.

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

L’objet NetworkInfo est un singleton. Pour obtenir l’objet NetworkInfo, utilisez la propriété statique NetworkInfo.networkInfo. N’appelez pas le constructeur de la classe new NetworkInfo().

La plupart des ordinateurs disposent d’une ou de plusieurs interfaces, par exemple d’une interface réseau sans fil et d’une interface réseau câblée. D’autres interfaces peuvent être présentes : VPN, interface de bouclage, interfaces virtuelles, etc.

Un objet NetworkInfo distribue un événement change lorsque les interfaces disponibles changent. Appelez la méthode findInterfaces() pour obtenir les informations les plus récentes concernant le réseau.

Remarque : l’objet NativeApplication distribue également des événements de changement réseau.

Classe NetworkInterfaceClasse InterfaceAddressnetworkChange Distribué lorsque les interfaces réseau ont changé.flash.events.Event.NETWORK_CHANGEflash.events.Event Distribué lorsque les interfaces réseau ont changé. findInterfaces Renvoie la liste des interfaces réseau associées à la machine.Tableau d’objets NetworkInterface. Renvoie la liste des interfaces réseau associées à la machine. isSupported Indique si l’accès aux informations de l’interface réseau est pris en charge sur le système client.Boolean Indique si l’accès aux informations de l’interface réseau est pris en charge sur le système client. networkInfo Occurrence singleton de l’objet NetworkInfo.flash.net:NetworkInfoIndique si le contenu s’exécutant hors du sandbox de sécurité de l’application AIR accède à cette propriété. SecurityErrorSecurityError Occurrence singleton de l’objet NetworkInfo.
URLVariables La classe URLVariables vous permet de transférer des variables entre une application et un serveur.Object La classe URLVariables vous permet de transférer des variables entre une application et un serveur. Utilisez les objets URLVariables avec des méthodes de la classe URLLoader, avec la propriété data de la classe URLRequest et des fonctions de package flash.net. L’exemple suivant ouvre l’application distante hébergée à l’adresse http://www.[yourDomain].com/application.jsp dans une nouvelle fenêtre de navigateur et transmet à l’application des données relatives à une session utilisateur, capturées dans un objet URLVariables.

Vous trouverez ci-dessous des extraits de l’exemple :

  1. La fonction constructeur crée une occurrence de URLRequest nommée request, en utilisant l’URL de l’application distante comme paramètre.
  2. Un objet URLVariables est créé et des valeurs sont attribuées à deux de ses propriétés.
  3. L’objet URLVariables est affecté à la propriété data de l’objet URLRequest.
  4. L’exemple appelle navigateToURL, qui ouvre une nouvelle fenêtre de navigateur vers l’URL de l’application distante.

Remarque : pour exécuter l’exemple, l’URL de l’application distante de l’exemple doit être remplacée par une URL opérationnelle. En outre, du code serveur serait nécessaire pour traiter les informations capturées par Flash Player dans l’objet URLVariables.

package { import flash.display.Sprite; import flash.net.navigateToURL; import flash.net.URLRequest; import flash.net.URLVariables; public class URLVariablesExample extends Sprite { public function URLVariablesExample() { var url:String = "http://www.[yourDomain].com/application.jsp"; var request:URLRequest = new URLRequest(url); var variables:URLVariables = new URLVariables(); variables.exampleSessionId = new Date().getTime(); variables.exampleUserLabel = "guest"; request.data = variables; navigateToURL(request); } } }
URLLoaderURLVariables Crée un nouvel objet URLVariables.sourceStringnullChaîne codée au format URL contenant des paires nom/valeur. Crée un nouvel objet URLVariables. Vous transmettez des objets URLVariables à la propriété data des objets URLRequest.

Si vous appelez le constructeur URLVariables avec une chaîne, la méthode decode() est appelée automatiquement pour convertir la chaîne en propriétés de l’objet URLVariables.

decode Convertit la chaîne de variables en propriétés de l’objet URLVariables spécifié.Le paramètre source doit être une chaîne de requête codée au format URL et contenant des paires nom/valeur. ErrorErrorsourceStringChaîne de requête codée au format URL et contenant des paires nom/valeur. Convertit la chaîne de variables en propriétés de l’objet URLVariables spécifié.

Cette méthode est utilisée en interne par les événements URLVariables. La plupart des utilisateurs n’a pas besoin d’appeler cette méthode directement.

Les exemples suivants indiquent comment analyser les chaînes codées dans l’URL. Exemple fourni par ActionScriptExamples.com. // The first method passes the string to be decoded to the URLVariables class constructor: var urlVariables:URLVariables = new URLVariables("firstName=Tom&lastName=Jones"); lbl.text = urlVariables.lastName + "," + urlVariables.firstName; // The second method uses the decode() method to parse the URL encoded string: var urlVariables:URLVariables = new URLVariables(); urlVariables.decode("firstName=Tom&lastName=Jones"); lbl.text = urlVariables.lastName + "," + urlVariables.firstName;
toString Renvoie une chaîne contenant toutes les variables énumérables, au format de l’application de codage du contenu MIME/x-www-form-urlencoded.Chaîne codée au format URL contenant des paires nom/valeur. String Renvoie une chaîne contenant toutes les variables énumérables, au format de l’application de codage du contenu MIME/x-www-form-urlencoded.
IDynamicPropertyWriter Cette interface s’utilise avec l’interface IDynamicPropertyOutput pour contrôler la sérialisation des propriétés dynamiques des objets dynamiques. Cette interface s’utilise avec l’interface IDynamicPropertyOutput pour contrôler la sérialisation des propriétés dynamiques des objets dynamiques. Pour l’utiliser, affectez un objet qui implémente l’interface IDynamicPropertyWriter dans la propriété ObjectEncoding.dynamicPropertyWriter. IDynamicPropertyOutputObjectEncoding.dynamicPropertyWriterwriteDynamicProperties Ecrit le nom et la valeur d’un objet IDynamicPropertyOutput dans un objet doté de propriétés dynamiques.objObjectObjet dans lequel écrire. outputflash.net:IDynamicPropertyOutputObjet IDynamicPropertyOutput contenant le nom et la valeur à écrire dynamiquement dans l’objet. Ecrit le nom et la valeur d’un objet IDynamicPropertyOutput dans un objet doté de propriétés dynamiques. Si la propriété ObjectEncoding.dynamicPropertyWriter est définie, cette méthode est appelée pour chaque objet doté de propriétés dynamiques. IDynamicPropertyOutputObjectEncoding.dynamicPropertyWriterDatagramSocket La classe DatagramSocket permet au code d’envoyer et de recevoir des paquets UDP (Universal Datagram Protocol, protocole de datagramme utilisateur).flash.events:EventDispatcher La classe DatagramSocket permet au code d’envoyer et de recevoir des paquets UDP (Universal Datagram Protocol, protocole de datagramme utilisateur).

Prise en charge du profil AIR : cette fonctionnalité est prise en charge sur tous les systèmes d’exploitation de bureau, mais ne l’est pas sur les périphériques mobiles ou 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é DatagramSocket.isSupported. Voir Prise en charge du profil AIR pour plus d’informations sur la prise en charge de l’API dans plusieurs profils.

Les paquets de datagrammes sont transmis individuellement entre la source et la destination. Il est possible que les paquets ne soient pas reçus dans l’ordre dans lequel ils ont été envoyés. Les paquets perdus lors de la transmission ne sont pas retransmis ; il est même possible qu’ils ne soient pas détectés.

Les données envoyées à l’aide d’un socket datagramme ne sont pas automatiquement divisées en paquets de taille transmissible. Si vous envoyez un paquet UDP qui dépasse la taille de l’unité maximale de transmission, le réseau refuse le paquet (sans avertissement). L’UTM limite correspond à la plus petite UTM d’une interface, d’un commutateur ou d’un router dans le chemin de transmission. Vous pouvez utiliser la classe NetworkInterface pour déterminer l’UTM de l’interface locale, bien que d’autres nœuds dans le réseau puissent avoir différentes valeurs d’UTM.

La classe Socket utilise TCP, qui permet de garantir la livraison des paquets, ainsi que de diviser automatiquement et de reconstituer les paquets volumineux. TCP offre également une meilleure gestion de la bande passante du réseau. Ces fonctionnalités signifient que les données envoyées à l’aide d’un socket TCP impliquent un temps d’attente plus long, mais pour la plupart des utilisateurs, les avantages du protocole TCP compensent les coûts. La plupart des communications réseau doivent utiliser la classe Socket plutôt que la classe DatagramSocket.

La classe DatagramSocket est utile lors de l’utilisation d’applications qui offrent un faible temps d’attente de transmission et qui tolèrent la perte de paquets. Par exemple, les opérations de réseau dans des applications VoIP (voix sur IP) et en temps réel, telles que les jeux multijoueurs, peuvent tirer profit du protocole UDP. La classe DatagramSocket est également utile pour certaines applications côté serveur. Etant donné que le protocole UDP est sans état, un serveur peut traiter davantage de requêtes provenant de plusieurs clients que s’il utilisait le protocole TCP.

La classe DatagramSocket ne peut être utilisée dans les applications d’Adobe AIR et uniquement dans le sandbox de sécurité de l’application.

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

package { import flash.display.Sprite; import flash.events.DatagramSocketDataEvent; import flash.events.Event; import flash.events.MouseEvent; import flash.events.TimerEvent; import flash.net.DatagramSocket; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFieldType; import flash.utils.ByteArray; import flash.utils.Timer; public class DatagramSocketExample extends Sprite { private var datagramSocket:DatagramSocket = new DatagramSocket();; private var localIP:TextField; private var localPort:TextField; private var logField:TextField; private var targetIP:TextField; private var targetPort:TextField; private var message:TextField; public function DatagramSocketExample() { setupUI(); } private function bind( event:Event ):void { if( datagramSocket.bound ) { datagramSocket.close(); datagramSocket = new DatagramSocket(); } datagramSocket.bind( parseInt( localPort.text ), localIP.text ); datagramSocket.addEventListener( DatagramSocketDataEvent.DATA, dataReceived ); datagramSocket.receive(); log( "Bound to: " + datagramSocket.localAddress + ":" + datagramSocket.localPort ); } private function dataReceived( event:DatagramSocketDataEvent ):void { //Read the data from the datagram log("Received from " + event.srcAddress + ":" + event.srcPort + "> " + event.data.readUTFBytes( event.data.bytesAvailable ) ); } private function send( event:Event ):void { //Create a message in a ByteArray var data:ByteArray = new ByteArray(); data.writeUTFBytes( message.text ); //Send a datagram to the target try { datagramSocket.send( data, 0, 0, targetIP.text, parseInt( targetPort.text )); log( "Sent message to " + targetIP.text + ":" + targetPort.text ); } catch ( error:Error ) { log( error.message ); } } private function log( text:String ):void { logField.appendText( text + "\n" ); logField.scrollV = logField.maxScrollV; trace( text ); } private function setupUI():void { targetIP = createTextField( 10, 10, "Target IP:", "192.168.0.1" ); targetPort = createTextField( 10, 35, "Target port:", "8989" ); message = createTextField( 10, 60, "Message:", "Lucy can't drink milk." ); localIP = createTextField( 10, 85, "Local IP", "0.0.0.0"); localPort = createTextField( 10, 110, "Local port:", "0" ); createTextButton( 250, 135, "Bind", bind ); createTextButton( 300, 135, "Send", send ); logField = createTextField( 10, 160, "Log:", "", false, 200 ) this.stage.nativeWindow.activate(); } private function createTextField( x:int, y:int, label:String, defaultValue:String = '', editable:Boolean = true, height:int = 20 ):TextField { var labelField:TextField = new TextField(); labelField.text = label; labelField.type = TextFieldType.DYNAMIC; labelField.width = 180; labelField.x = x; labelField.y = y; var input:TextField = new TextField(); input.text = defaultValue; input.type = TextFieldType.INPUT; input.border = editable; input.selectable = editable; input.width = 280; input.height = height; input.x = x + labelField.width; input.y = y; this.addChild( labelField ); this.addChild( input ); return input; } private function createTextButton( x:int, y:int, label:String, clickHandler:Function ):TextField { var button:TextField = new TextField(); button.htmlText = "<u><b>" + label + "</b></u>"; button.type = TextFieldType.DYNAMIC; button.selectable = false; button.width = 180; button.x = x; button.y = y; button.addEventListener( MouseEvent.CLICK, clickHandler ); this.addChild( button ); return button; } } }
RFC 768Classe SocketClasse XMLSocketClasse ServerSocketioError Distribué lorsque ce socket reçoit une erreur E/S.flash.events.IOErrorEvent.IOERRORflash.events.IOErrorEventDistribué lorsque ce socket reçoit une erreur E/S. Distribué lorsque ce socket reçoit une erreur E/S. data Distribué lorsque ce socket reçoit un paquet de données.flash.events.DatagramSocketDataEvent.DATAflash.events.DatagramSocketDataEvent Distribué lorsque ce socket reçoit un paquet de données. close Distribué lorsque le système d’exploitation ferme ce socket.flash.events.Event.CLOSEflash.events.Event Distribué lorsque le système d’exploitation ferme ce socket.

L’événement close n’est pas distribué lorsque la méthode close() de DatagramSocket est appelée.

DatagramSocket Crée un objet DatagramSocket.si le contenu situé hors du sandbox de sécurité de l’application AIR tente de créer un objet DatagramSocket. SecurityErrorSecurityError Crée un objet DatagramSocket. bind Lie ce socket à l’adresse et au port locaux spécifiés.Cette erreur se produit lorsque le paramètre localPort est défini sur une valeur inférieure à 0 ou supérieure à 65535. RangeErrorRangeErrorCette erreur se produit lorsque localAddress n’est pas une adresse IP syntaxiquement correcte. ArgumentErrorArgumentErrorCette erreur se produit si le socket ne peut pas être lié, notamment lorsque :
  1. localPort est déjà utilisé par le socket ;
  2. Le compte utilisateur sous lequel l’application est en cours d’exécution ne dispose pas des privilèges système suffisants pour se relier au port spécifié. (Les problèmes de privilèges se produisent généralement lorsque localPort < 1024.)
  3. Cet objet DatagramSocket est déjà lié.
  4. Cet objet DatagramSocket a été fermé.
IOErrorflash.errors:IOError
Cette erreur se produit lorsque localAddress n’est pas une adresse locale valide. ErrorErrorlocalPortint0Numéro de port auquel se relier sur l’ordinateur local. Si localPort est définie sur 0 (valeur par défaut), le prochain port système disponible est lié. L’autorisation de se connecter à un numéro de port inférieur à 1024 est soumise à la stratégie de protection du système. Sous Mac et Linux, par exemple, l’application doit être exécutée avec des privilèges racines pour se connecter aux ports inférieurs à 1024. localAddressString0.0.0.0Adresse IP sur la machine locale à laquelle se relier. Cette adresse peut être une adresse IPv4 ou une adresse IPv6. Si le paramètre localAddress est défini sur 0.0.0.0 (valeur par défaut), le socket écoute toutes les adresses IPv4 disponibles. Pour écouter toutes les adresses IPv6, vous devez spécifier "::" comme argument de localAddress. Pour utiliser une adresse IPv6, l’ordinateur et le réseau doivent tous deux être configurés de façon à prendre en charge le protocole IPv6. En outre, un socket lié à une adresse IPv4 ne peut pas se connecter à un socket avec une adresse IPv6. De même, un socket lié à une adresse IPv6 ne peut pas se connecter à un socket avec une adresse IPv4. Le type d’adresse doit correspondre.
Lie ce socket à l’adresse et au port locaux spécifiés.

La méthode bind() s’exécute en mode synchrone. L’opération de liaison se termine avant que la ligne de code suivante soit exécutée.

L’exemple suivant illustre diverses façons de lier un objet DatagramSocket : udpSocket.bind(); //bind to any available port, listen on all IPv4 addresses udpSocket.bind( 0, "0.0.0.0" ); //same as above udpSocket.bind( 0, "127.0.0.1" ); //any available port on the localhost address udpSocket.bind( 8989, "192.168.0.1" ); //port 8989 on a particular IPv4 address udpSocket.bind( 0, "::" ); //any available port on all IPv6 address udpSocket.bind( 8989, "::1" ); //port 8989 on the IPv6 localhost address udpSocket.bind( 8989, "2001:1890:110b:1e19:f06b:72db:7026:3d7a" ); //port 8989 on a particular IPv6 address
close Ferme le socket.Indique s’il s’avère impossible de fermer le socket (notamment en raison d’une mise en réseau interne ou d’une erreur du système d’exploitation), ou si ce dernier n’est pas ouvert. IOErrorflash.errors:IOError Ferme le socket.

Le socket est déconnecté de la machine distante et n’est plus lié à l’ordinateur local. Il est impossible de réutiliser un socket fermé.

connect Connecte le socket à une adresse et un port distants spécifiés.Cette erreur se produit lorsque le paramètre localPort est défini sur une valeur inférieure à 1 ou supérieure à 65535. RangeErrorRangeErrorCette erreur se produit lorsque localAddress n’est pas une adresse syntaxiquement valide, ou lors de l’utilisation d’une adresse de routage par défaut ("0.0.0.0" ou "::"). ArgumentErrorArgumentErrorCette erreur se produit s’il est impossible de connecter le socket, notamment lorsque bind() n’a pas été appelée avant l’appel de connect() et que la liaison par défaut à la famille d’adresses distantes n’est pas possible. IOErrorflash.errors:IOErrorremoteAddressStringAdresse IP de l’ordinateur distant auquel établir une connexion. Cette adresse peut être une adresse IPv4 ou une adresse IPv6. Si la méthode bind() n’a pas été appelée, la famille de l’adresse remoteAddress, IPv4 ou IPv6, est utilisée lors de l’appel de la méthode bind() par défaut. remotePortintNuméro du port sur la machine distante pour établir une connexion. Connecte le socket à une adresse et un port distants spécifiés.

Lorsqu’un socket datagramme est « connecté », les paquets peuvent être envoyés et reçus uniquement à partir de la cible spécifiée. Les paquets provenant d’autres sources sont ignorés. Il n’est pas nécessaire de connecter un socket datagramme. Etablir une connexion peut supprimer la nécessité de filtrer les paquets superflus provenant d’autres sources. Cependant, une connexion socket UDP n’est pas une connexion réseau permanente (comme c’est le cas pour une connexion TCP). Il est possible que l’extrémité distante du socket n’existe même pas.

Si la méthode bind() n’a pas été appelée, le socket est automatiquement lié à l’adresse et au port locaux par défaut.

receive Autorise cet objet DatagramSocket à recevoir les paquets entrants sur l’adresse IP et le port liés. Autorise cet objet DatagramSocket à recevoir les paquets entrants sur l’adresse IP et le port liés.

La fonction est immédiatement renvoyée. L’objet DatagramSocket distribue un événement data lors de la réception d’un paquet de données.

dataflash.events:DatagramSocketDataEventlorsqu’un paquet UDP est reçu. lorsqu’un paquet UDP est reçu.
send Envoie le paquet contenant les octets dans l’objet ByteArray via le protocole UDP.Cette erreur se produit lorsque le paramètre port est défini sur une valeur inférieure à 1 ou supérieure à 65535. RangeErrorRangeErrorSi le socket n’est pas connecté et si l’adresse n’est pas une adresse IP correctement formée. ArgumentErrorArgumentErrorCette erreur se produit dans les cas suivants :
  1. Si la méthode bind() n’a pas été appelée, et lorsque la liaison par défaut à la famille d’adresse de destination est impossible.
  2. Sur certains systèmes d’exploitation, une erreur IOError est renvoyée si la méthode connect() est appelée alors que l’hôte cible a déjà reçu un message « Destination inaccessible » ICMP. (Ainsi, l’erreur est renvoyée lors de la deuxième tentative infructueuse d’envoi de données et non par lors de la première.) Les autres systèmes d’exploitation, tels que Windows, ignorent ces messages ICMP ; par conséquent, aucune erreur n’est renvoyée.
IOErrorflash.errors:IOError
si le paramètre bytes est défini sur null. ErrorErrorSi la valeur du paramètre offset est supérieure à la longueur de l’objet ByteArray spécifiée dans le paramètre bytes ou si la quantité de données spécifiée devant être écrites par offset et length dépasse les données disponibles. RangeErrorRangeErrorSi le paramètre address ou port est spécifié lorsque le socket a déjà été connecté. IllegalOperationErrorflash.errors:IllegalOperationErrorbytesflash.utils:ByteArrayun objet ByteArray contenant les données du paquet. offsetuint0Décalage de base zéro dans l’objet ByteArray bytes à partir duquel le paquet commence. lengthuint0Nombre d’octets dans le paquet. La valeur par défaut 0 provoque l’envoi de l’intégralité du ByteArray, à partir de la valeur spécifiée par le paramètre offset. addressStringnullAdresse IPv4 ou IPv6 de l’ordinateur distant. Une adresse est requise si aucune adresse n’a encore été spécifiée à l’aide de la méthode connect(). portint0Numéro de port sur l’ordinateur distant. Une valeur supérieure à 0 et inférieure à 65536 est requise si le port n’a pas encore été spécifié à l’aide de la méthode connect().
Envoie le paquet contenant les octets dans l’objet ByteArray via le protocole UDP.

Si le socket est connecté, le paquet est envoyé à l’adresse distante et au port spécifiés dans la méthode connect(), et il est impossible de spécifier une adresse IP et un port de destination. Si ce dernier n’est pas connecté, le paquet est envoyé à l’adresse et au port spécifiés, et vous devez fournir des valeurs valides pour les paramètres address et port. Si la méthode bind() n’a pas été appelée, le socket est automatiquement lié à l’adresse et au port locaux par défaut.

Remarque : l’envoi de données à une adresse de diffusion n’est pas pris en charge.

bound Indique si cet objet socket est actuellement lié à une adresse et à un port locaux.Boolean Indique si cet objet socket est actuellement lié à une adresse et à un port locaux. bind()connected Indique si cet objet socket est actuellement connecté à une adresse et à un port distants.Boolean Indique si cet objet socket est actuellement connecté à une adresse et à un port distants.

Remarque : une valeur true ne signifie pas qu’un ordinateur distant écoute sur l’adresse et le port connectés. Cela signifie simplement que cet objet DataGramSocket enverra des données à (ou recevra des données de) cette adresse et à ce port.

connect()
isSupported Indique si les fonctions DatagramSocket sont prises en charge dans l’environnement d’exécution.Boolean Indique si les fonctions DatagramSocket sont prises en charge dans l’environnement d’exécution. localAddress Adresse IP à laquelle ce socket est lié sur la machine locale.String Adresse IP à laquelle ce socket est lié sur la machine locale. bind()localPort Port auquel ce socket est lié sur la machine locale.int Port auquel ce socket est lié sur la machine locale. bind()remoteAddress Adresse IP de la machine distante à laquelle ce socket est connecté.String Adresse IP de la machine distante à laquelle ce socket est connecté. connect()remotePort Port de la machine distante auquel ce socket est connecté.int Port de la machine distante auquel ce socket est connecté. connect()
NetGroupSendResult La classe NetGroupSendResult est une énumération des valeurs constantes utilisées pour la valeur renvoyée par les méthodes de routage direct associées à une occurrence de NetGroup.Object La classe NetGroupSendResult est une énumération des valeurs constantes utilisées pour la valeur renvoyée par les méthodes de routage direct associées à une occurrence de NetGroup. flash.net.NetGroup.sendToNearest()flash.net.NetGroup.sendToNeighbor()flash.net.NetGroup.sendToAllNeighbors()ERROR Indique qu’une erreur est survenue (par exemple, un refus d’autorisation) lors de l’utilisation d’une méthode de routage direct.errorString Indique qu’une erreur est survenue (par exemple, un refus d’autorisation) lors de l’utilisation d’une méthode de routage direct. NO_ROUTE Indique qu’aucun voisin n’a été trouvé pour acheminer le message jusqu’à la destination requise.no routeString Indique qu’aucun voisin n’a été trouvé pour acheminer le message jusqu’à la destination requise. SENT Indique qu’un chemin a été trouvé pour le message et que ce dernier a été envoyé vers sa destination.sentString Indique qu’un chemin a été trouvé pour le message et que ce dernier a été envoyé vers sa destination. URLRequestDefaults La classe URLRequestDefaults inclut des propriétés statiques que vous pouvez utiliser pour définir les valeurs par défaut des propriétés de la classe URLRequest.Object La classe URLRequestDefaults inclut des propriétés statiques que vous pouvez utiliser pour définir les valeurs par défaut des propriétés de la classe URLRequest. Elle comprend également une méthode statique, URLRequestDefaults.setLoginCredentialsForHost(), qui vous permet de définir les informations d’authentification par défaut des requêtes. La classe URLRequest définit les informations devant être utilisées dans une requête HTTP.

Les propriétés définies dans un objet URLRequest remplacent les propriétés statiques définies pour la classe URLRequestDefaults.

Les paramètres de la classe URLRequestDefault ne s’appliquent qu’au contenu du domaine d’application de l’appelant, à une exception près : les paramètres définis lors de l’appel de URLRequestDefaults.setLoginCredentialsForHost() s’appliquent à tous les domaines d’application dans l’application en cours d’exécution.

Seul le contenu Adobe® AIR® s’exécutant dans le sandbox de sécurité de l’application peut utiliser la classe URLRequestDefaults. L’utilisation d’autres contenus renvoie une exception SecurityError lors de l’accès aux membres ou aux propriétés de cette classe.

URLRequestsetLoginCredentialsForHost Définit le nom d’utilisateur et le mot de passe par défaut de l’hôte sélectionné.L’appelant ne se trouve pas dans le sandbox de sécurité de l’application AIR. SecurityErrorSecurityErrorhostnameStringLe nom d’hôte auxquels sont appliqués le nom d’utilisateur et le mot de passe. Il peut s’agir d’un domaine, tel que "www.example.com", ou d’un nom de domaine et d’un numéro de port, par exemple "www.example.com:80". Notez que "example.com", "www.example.com" et "sales.example.com" sont considérés comme hôtes uniques. userStringNom d’utilisateur par défaut à utiliser lors de l’authentification d’une requête pour l’hôte spécifié. passwordStringMot de passe par défaut à utiliser lors de l’authentification d’une requête pour l’hôte spécifié. Définit le nom d’utilisateur et le mot de passe par défaut de l’hôte sélectionné. Ces paramètres s’appliquent aux objets URLRequest dans tous les domaines d’application de l’application, pas seulement à ceux du domaine d’application de l’objet appelant cette méthode (tandis que les propriétés statiques de la classe URLRequest s’appliquent uniquement au domaine d’application de l’appelant). Ceci permet une connexion au contenu de l’application (quel que soit le domaine d’application du contenu) lorsqu’une autre partie de l’application se connecte.

Remarque concernant les applications fonctionnant sous Mac OS : lorsque vous appelez cette méthode sous Mac OS, l’application utilise ces informations d’identification pour l’hôte spécifié tant que celle-ci est ouverte, même si vous appelez par la suite la méthode URLRequestDefaults.setLoginCredentialsForHost() pour le même hôte. Cependant, si un serveur rejette les informations d’identification spécifiées par cette méthode, l’appel suivant à la méthode URLRequestDefaults.setLoginCredentialsForHost() (pour le même hôte) est reconnu.

Remarque : cette méthode ne s’applique pas aux objets URLRequest utilisés lors du chargement de fichiers ou dans des requêtes RTMP.

authenticate Paramètre par défaut de la propriété authenticate des objets URLRequest.BooleanL’appelant ne se trouve pas dans le sandbox de sécurité de l’application AIR. SecurityErrorSecurityErrortrue Paramètre par défaut de la propriété authenticate des objets URLRequest. La définition de la propriété authenticate dans un objet URLRequest annule ce paramètre par défaut.

Remarque : ce paramètre ne s’applique pas aux objets URLRequest utilisés lors du chargement de fichiers ou dans des requêtes RTMP.

URLRequest.authenticate
cacheResponse Paramètre par défaut de la propriété cacheResponse des objets URLRequest.BooleanL’appelant ne se trouve pas dans le sandbox de sécurité de l’application AIR. SecurityErrorSecurityErrortrue Paramètre par défaut de la propriété cacheResponse des objets URLRequest. La définition de la propriété cacheResponse dans un objet URLRequest annule ce paramètre par défaut. Si la valeur correspond à true, l’application AIR utilise par défaut le cache HTTP du système d’exploitation. Ce paramètre ne s’applique pas aux objets URLRequest utilisés lors du chargement de fichiers ou dans des requêtes RTMP. URLRequest.cacheResponsefollowRedirects Paramètre par défaut de la propriété followRedirects des objets URLRequest.BooleanL’appelant ne se trouve pas dans le sandbox de sécurité de l’application AIR. SecurityErrorSecurityErrortrue Paramètre par défaut de la propriété followRedirects des objets URLRequest. La définition de la propriété followRedirects dans un objet URLRequest annule ce paramètre par défaut. Ce paramètre ne s’applique pas aux objets URLRequest utilisés lors du chargement de fichiers ou dans des requêtes RTMP. URLRequest.followRedirectsidleTimeout Paramètre par défaut de la propriété idleTimeout des objets URLRequest et des objets HTMLLoader.NumberL’appelant ne se trouve pas dans le sandbox de sécurité de l’application AIR. SecurityErrorSecurityErrorLa valeur idleTimeout est négative. RangeErrorRangeError0 Paramètre par défaut de la propriété idleTimeout des objets URLRequest et des objets HTMLLoader.

Le délai d’inactivité correspond au laps de temps (en millisecondes) que le client attend une réponse du serveur, une fois la connexion établie et avant l’abandon de la requête.

Ce paramètre définit le délai d’inactivité par défaut utilisé par l’objet URLRequest ou par l’objet HTMLLoader. La définition de la propriété idleTimeout dans un objet URLRequest ou un objet HTMLLoader annule ce paramètre par défaut.

Lorsque cette propriété est définie sur 0 (valeur par défaut), le moteur d’exécution utilise le délai d’inactivité par défaut défini par le système d’exploitation. Le délai d’inactivité par défaut varie selon le système d’exploitation (Mac OS, Linux ou Windows) ou selon la version du système d’exploitation.

Ce paramètre ne s’applique pas aux objets URLRequest utilisés lors du chargement de fichiers ou dans des requêtes RTMP.

HTMLLoader.idleTimeoutURLRequest.idleTimeout
manageCookies Paramètre par défaut de la propriété manageCookies des objets URLRequest.BooleanL’appelant ne se trouve pas dans le sandbox de sécurité de l’application AIR. SecurityErrorSecurityErrortrue Paramètre par défaut de la propriété manageCookies des objets URLRequest. La définition de la propriété manageCookies dans un objet URLRequest annule ce paramètre par défaut.

Remarque : ce paramètre ne s’applique pas aux objets URLRequest utilisés lors du chargement de fichiers ou dans des requêtes RTMP.

URLRequest.manageCookies
useCache Paramètre par défaut de la propriété useCache des objets URLRequest.BooleanL’appelant ne se trouve pas dans le sandbox de sécurité de l’application AIR. SecurityErrorSecurityErrortrue Paramètre par défaut de la propriété useCache des objets URLRequest. La définition de la propriété useCache dans un objet URLRequest annule ce paramètre par défaut. Ce paramètre ne s’applique pas aux objets URLRequest utilisés lors du chargement de fichiers ou dans des requêtes RTMP. URLRequest.useCacheuserAgent Paramètre par défaut de la propriété userAgent des objets URLRequest.StringL’appelant ne se trouve pas dans le sandbox de sécurité de l’application AIR. SecurityErrorSecurityError Paramètre par défaut de la propriété userAgent des objets URLRequest. La définition de la propriété userAgent dans un objet URLRequest annule ce paramètre par défaut.

Il s’agit également de la chaîne userAgent par défaut de tous les objets HTMLLoader (utilisés lors de l’appel de la méthode load() de l’objet HTMLLoader). La définition de la propriété userAgent de l’objet HTMLLoader annule le paramètre URLRequestDefaults.userAgent.

Cette valeur par défaut varie selon le système d’exploitation du moteur d’exécution (par exemple, Mac OS, Linux ou Windows), ainsi que du langage et de la version du moteur d’exécution, comme le montrent les exemples suivants :

  • "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/526.9+ (KHTML, like Gecko) AdobeAIR/1.5"
  • "Mozilla/5.0 (Windows; U; en) AppleWebKit/526.9+ (KHTML, like Gecko) AdobeAIR/1.5"
  • "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/526.9+ (KHTML, like Gecko) AdobeAIR/1.5"
flash.net.URLRequest.userAgentflash.html.HTMLLoader.userAgent
NetGroup Les occurrences de la classe NetGroup représentent l’appartenance à un groupe RTMFP.flash.events:EventDispatcher Les occurrences de la classe NetGroup représentent l’appartenance à un groupe RTMFP. Utilisez cette classe pour effectuer les opérations suivantes :
  • Contrôle de la qualité du service. La propriété info contient un objet NetGroupInfo dont les propriétés fournissent des statistiques de qualité de service pour ce groupe.
  • Publication. Appelez post() pour diffuser des messages ActionScript à tous les membres d’un groupe.
  • Routage direct. Appelez sendToNearest(), sendToNeighbor() et sendToAllNeighbors() pour envoyer un court message de données à un membre spécifique d’un groupe homologue à homologue. Il n’est pas nécessaire que la source et la destination aient une connexion directe.
  • Réplication d’objets. Appelez addHaveObjects(), removeHaveObjects(), addWantObjects(), removeWantObjects(), writeRequestedObject() et denyRequestedObject() pour diviser les données volumineuses en plusieurs fragments et les reproduire dans tous les nœuds d’un groupe homologue à homologue.

Dans la classe NetGroup côté client, l’objet NetConnection distribue les événements suivants :

  • NetGroup.Connect.Success
  • NetGroup.Connect.Failed
  • NetGroup.Connect.Rejected

La propriété info.group de l’objet d’événement contient une référence à l’événement source (l’objet NetGroup). L’objet NetGroup distribue tous les autres événements. Dans la classe NetGroup côté serveur, l’objet NetGroup distribue tous les événements.

Pour plus d’informations sur la mise en réseau coopérative, voir le didacticiel Basics of P2P in Flash par Tom Krcha (disponible en anglais uniquement). Pour plus d’informations sur l’utilisation de groupes avec la mise en réseau coopérative, voir le didacticiel Social Media Experiences with Flash Media and RTMFP, également par Tom Krcha (disponible en anglais uniquement).

Pour plus d’informations sur les détails techniques de la mise en réseau coopérative, voir le didacticiel P2P on the Flash Platform with RTMFP publié par l’informaticien d’Adobe, Matthieu Kaufman (disponible en anglais uniquement).

Il s’agit d’une application de conférence vidéo simple qui utilise la mise en réseau homologue à homologue. L’application se connecte à Flash Media Server via RTMFP. Le serveur conserve les empreintes des applications clientes et gère le groupe d’homologues lors de la connexion des clients. Cependant, toutes les données sont envoyées entre les clients (homologues), elles ne sont pas renvoyées au serveur.

Lorsque vous exécutez l’application, vous pouvez indiquer n’importe quel nom de groupe dans le champ de saisie de texte. La classe GroupSpecifier utilise le nom (ainsi que toutes les propriétés que vous avez définies) pour créer une chaîne qui est le nom toujours unique du groupe. Pour connecter un autre client au groupe, ce client doit utiliser le même nom de groupe. Par exemple, si le client A utilise le nom de groupe « firstmesh », les autres clients qui souhaitent communiquer avec le client A doivent également utiliser le nom de groupe « firstmesh ». Si le client B utilise le nom de groupe « kite », il parviendra à se connecter, mais il créera un nouveau groupe et ne sera pas en mesure de communiquer avec le client A ou les membres du groupe « firstmesh ».

<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="100%" height="100%" applicationComplete="OnApplicationComplete()"> <mx:Script> <![CDATA[ private var netConnection:NetConnection = null; private var netStream:NetStream = null; private var netGroup:NetGroup = null; private var video:Video = null; private var sequenceNumber:uint = 0; private var resizeTimer:Timer = null; private const SERVER:String = "rtmfp://fms.example.com/someapp"; [Bindable] private var connected:Boolean = false; [Bindable] private var joinedGroup:Boolean = false; private function OnApplicationComplete():void { userName.text = "user " + int(Math.random() * 65536); groupName.text = "channel" + (int(Math.random() * 899) + 101); resizeTimer = new Timer(2000.0); resizeTimer.addEventListener(TimerEvent.TIMER, DoResizeVideo); resizeTimer.start(); } private function StatusMessage(msg:Object):void { statusLog.text += msg; statusLog.verticalScrollPosition = statusLog.textHeight; statusLog.validateNow(); } private function NetStatusHandler(e:NetStatusEvent):void { StatusMessage(e.info.code); switch(e.info.code) { case "NetConnection.Connect.Success": OnConnect(); break; case "NetConnection.Connect.Closed": case "NetConnection.Connect.Failed": case "NetConnection.Connect.Rejected": case "NetConnection.Connect.AppShutdown": case "NetConnection.Connect.InvalidApp": OnDisconnect(); break; case "NetStream.Connect.Success": // e.info.stream OnNetStreamConnect(); break; case "NetStream.Connect.Rejected": // e.info.stream case "NetStream.Connect.Failed": // e.info.stream DoDisconnect(); break; case "NetGroup.Connect.Success": // e.info.group OnNetGroupConnect(); break; case "NetGroup.Connect.Rejected": // e.info.group case "NetGroup.Connect.Failed": // e.info.group DoDisconnect(); break; case "NetGroup.Posting.Notify": // e.info.message, e.info.messageID OnPosting(e.info.message); break; case "NetStream.MulticastStream.Reset": case "NetStream.Buffer.Full": DoResizeVideo(); break; case "NetGroup.SendTo.Notify": // e.info.message, e.info.from, e.info.fromLocal case "NetGroup.LocalCoverage.Notify": // case "NetGroup.Neighbor.Connect": // e.info.neighbor case "NetGroup.Neighbor.Disconnect": // e.info.neighbor case "NetGroup.MulticastStream.PublishNotify": // e.info.name case "NetGroup.MulticastStream.UnpublishNotify": // e.info.name case "NetGroup.Replication.Fetch.SendNotify": // e.info.index case "NetGroup.Replication.Fetch.Failed": // e.info.index case "NetGroup.Replication.Fetch.Result": // e.info.index, e.info.object case "NetGroup.Replication.Request": // e.info.index, e.info.requestID default: break; } } private function DoConnect():void { StatusMessage("Connecting to \"" + SERVER + "\" ...\n"); netConnection = new NetConnection(); netConnection.addEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler); netConnection.connect(SERVER); } private function OnConnect():void { var groupSpecifier:GroupSpecifier; StatusMessage("Connected\n"); connected = true; groupSpecifier = new GroupSpecifier("max2009lab/" + groupName.text); groupSpecifier.multicastEnabled = true; groupSpecifier.postingEnabled = true; groupSpecifier.serverChannelEnabled = true; netStream = new NetStream(netConnection, groupSpecifier.groupspecWithAuthorizations()); netStream.addEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler); netGroup = new NetGroup(netConnection, groupSpecifier.groupspecWithAuthorizations()); netGroup.addEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler); StatusMessage("Join \"" + groupSpecifier.groupspecWithAuthorizations() + "\"\n"); } private function OnNetStreamConnect():void { netStream.client = this; var mic:Microphone = Microphone.getMicrophone(); if(mic) { mic.codec = SoundCodec.SPEEX; mic.setSilenceLevel(0); netStream.attachAudio(mic); StatusMessage("got microphone\n"); } var camera:Camera = Camera.getCamera(); if(camera) { camera.setMode(320, 240, 10); camera.setQuality(30000, 0); camera.setKeyFrameInterval(15); videoDisplay.attachCamera(camera); videoDisplay.maintainAspectRatio = true; netStream.attachCamera(camera); StatusMessage("got camera\n"); } netStream.publish("stream"); } private function OnNetGroupConnect():void { joinedGroup = true; } private function DoDisconnect():void { if(netConnection) netConnection.close(); videoDisplay.attachCamera(null); } private function OnDisconnect():void { StatusMessage("Disconnected\n"); netConnection = null; netStream = null; netGroup = null; connected = false; joinedGroup = false; } private function ClearChatText():void { chatText.text = ""; } private function DoPost():void { var message:Object = new Object; message.user = userName.text; message.text = chatText.text; message.sequence = sequenceNumber++; message.sender = netConnection.nearID; netGroup.post(message); StatusMessage("==> " + chatText.text + "\n"); chatText.callLater(ClearChatText); } private function OnPosting(message:Object):void { StatusMessage("<" + message.user + "> " + message.text + "\n"); } private function DoResizeVideo(ignored:* = null):void { if(video) { if( (0 == video.videoHeight) || (0 == video.videoWidth) ) { video.height = videoDisplay.height; video.width = videoDisplay.width; video.x = 0; video.y = 0; } else { var videoAspect:Number = Number(video.videoWidth) / Number(video.videoHeight); var displayAspect:Number = Number(videoDisplay.width) / Number(videoDisplay.height); var adjustFactor:Number; if(videoAspect >= displayAspect) // video is wider than display { adjustFactor = Number(video.videoWidth) / Number(videoDisplay.width); video.width = videoDisplay.width; video.height = int(Number(video.videoHeight) / adjustFactor); video.x = 0; video.y = int((videoDisplay.height - video.height) / 2); } else { adjustFactor = Number(video.videoHeight) / Number(videoDisplay.height); video.height = videoDisplay.height; video.width = int(Number(video.videoWidth) / adjustFactor); video.x = int((videoDisplay.width - video.width) / 2); video.y = 0; } } } } public function onPlayStatus(info:Object):void {} public function onMetaData(info:Object):void {} public function onCuePoint(info:Object):void {} public function onTextData(info:Object):void {} public function ValidateConnectAllowed(isConnected:Boolean, groupNameText:String):Boolean { return (!isConnected) && (groupNameText.length > 0); } ]]> </mx:Script> <mx:VBox top="10" right="10" left="10" bottom="10" verticalGap="6"> <mx:HBox width="100%"> <mx:Text text="Group:"/> <mx:TextInput id="groupName" width="100%" text="default" enabled="{!connected}"/> <mx:Button label="Connect" click="DoConnect()" enabled="{ValidateConnectAllowed(connected, groupName.text)}" /> <mx:Button label="Disconnect" click="DoDisconnect()" enabled="{connected}" /> </mx:HBox> <mx:VideoDisplay id="videoDisplay" width="320" height="240" resize="DoResizeVideo()"/> <mx:TextArea id="statusLog" width="100%" height="100%"/> <mx:HBox width="100%"> <mx:TextInput id="userName" width="160" /> <mx:TextInput id="chatText" width="100%" enabled="{joinedGroup}" enter="DoPost()"/> </mx:HBox> </mx:VBox> </mx:Application>
flash.net.GroupSpecifierflash.net.NetStreamValeurs de flash.events.NetStatusEvent info.code commençant par "NetGroup."netStatus Distribué lorsqu’un objet NetGroup publie son état ou signale une erreur.flash.events.NetStatusEvent.NET_STATUSflash.events.NetStatusEvent Distribué lorsqu’un objet NetGroup publie son état ou signale une erreur. L’événement netStatus contient une propriété info. La propriété info est un objet qui contient des informations sur l’événement, telles que la réussite ou l’échec d’une tentative de connexion. flash.events.NetStatusEvent.infoNetGroup Construit un objet NetGroup sur l’objet NetConnection spécifié et le joint au groupe spécifié par le groupspec.L’occurrence de NetConnection n’est pas connectée. ArgumentErrorArgumentErrorLe spécificateur de groupe n’est pas valide. ErrorErrorconnectionflash.net:NetConnectionObjet NetConnection. groupspecStringChaîne spécifiant le groupe RTMFP homologue à homologue auquel se joindre, y compris son nom, ses fonctionnalités et ses restrictions, ainsi que les autorisations de ce membre. new NetGroup(myConnection, myGroupSpecifier.groupspecWithAuthorizations()); Construit un nouvel objet NetGroup sur l’objet NetConnection spécifié et le joint au groupe spécifié. Construit un objet NetGroup sur l’objet NetConnection spécifié et le joint au groupe spécifié par le groupspec.

Dans la plupart des cas, un groupspec peut utiliser la liaison montante du réseau sur le système local. Lorsqu’un objet NetStream ou NetGroup est construit avec un groupspec, Flash Player affiche une boîte de dialogue Confidentialité. Cette boîte de dialogue vous demande si Flash Player peut utiliser la connexion en vue de partager les données avec les homologues d’un utilisateur. Si l’utilisateur clique sur « Autoriser ce domaine », la boîte de dialogue n’apparaît pas la prochaine fois que l’utilisateur se connecte à cette application. Si un utilisateur n’autorise pas la mise en réseau coopérative, toutes les fonctions d’homologue dans le groupe (publication, routage direct, réplication d’objets et multidiffusion) sont désactivées. Si l’autorisation est accordée, un événement NetStatusEvent est envoyé à l’écouteur d’événement de NetConnection avec NetGroup.Connect.Success dans la propriété code de l’objet info. Si l’autorisation est refusée, la propriété code est définie sur NetGroup.Connect.Rejected. Tant qu’un événement NetGroup.Connect.Success n’est pas reçu, une exception est renvoyée si vous tentez d’appeler une méthode de l’objet NetGroup.

Remarque : lorsqu’un client s’abonne au flux en multidiffusion d’une adresse IP native, la boîte de dialogue de sécurité n’est pas affichée.

flash.events.NetStatusEvent.info.code="NetGroup.Connect.Success"flash.events.NetStatusEvent.info.code="NetGroup.Connect.Rejected"flash.net.NetConnectionflash.net.GroupSpecifier
addHaveObjects Ajoute des objets depuis startIndex jusqu’à endIndex au jeu d’objets qui répondent aux demandes, comme l’indique ce nœud aux voisins.Un nombre transmis à cette méthode est inférieur à 0 ou supérieur à 9007199254740992. RangeErrorRangeErrorstartIndexNumberDébut de la plage d’index de l’objet à ajouter au jeu Have. endIndexNumberFin de la plage d’index de l’objet à ajouter au jeu Have. Ajoute des objets au jeu d’objets qui répondent aux demandes, comme l’indique ce nœud aux voisins. Ajoute des objets depuis startIndex jusqu’à endIndex au jeu d’objets qui répondent aux demandes, comme l’indique ce nœud aux voisins. Par défaut, le jeu Have est vide. Les index doivent être des nombres entiers compris entre 0 et 9 007 199 254 740 992.

Pour plus d’informations sur la réplication d’objets, voir la section "Replicate an object within a group" du guide Flash Media Server Developer’s Guide.

Cette méthode envoie un événement NetStatusEvent à l’écouteur d’événement de NetGroup avec "NetGroup.Replication.Request" dans la propriété code de l’objet info.

REMARQUE : testez l’événement NetGroup.Neighbor.Connect avant d’appeler cette méthode.

removeHaveObjects()writeRequestedObject()denyRequestedObject()flash.events.NetStatusEvent.info.code="NetGroup.Replication.Request"
addMemberHint Ajoute manuellement un enregistrement indiquant que peerID est un membre du groupe.TRUE pour une réussite, FALSE pour un échec. BooleanpeerIDStringID homologue à ajouter au jeu de voisins potentiels. Ajoute manuellement un enregistrement indiquant que peerID est un membre du groupe, mais qu’il ne se connecte pas nécessairement immédiatement. Ajoute manuellement un enregistrement indiquant que peerID est un membre du groupe. Une tentative de connexion immédiate est effectuée uniquement si la topologie le requiert. addNeighbor()addNeighbor Ajoute manuellement un voisin en le connectant immédiatement au peerID spécifié, qui doit déjà se trouver dans ce groupe.TRUE pour une réussite, FALSE pour un échec. BooleanpeerIDStringL’ID homologue auquel se connecter immédiatement. Ajoute manuellement un voisin en le connectant directement à l’ID homologue spécifié. Ajoute manuellement un voisin en le connectant immédiatement au peerID spécifié, qui doit déjà se trouver dans ce groupe. Cette connexion directe peut être abandonnée ultérieurement si la topologie n’en a pas besoin. addMemberHint()addWantObjects Ajoute des objets depuis startIndex jusqu’à endIndex au jeu d’objets à extraire.Un nombre transmis à cette méthode est inférieur à 0 ou supérieur à 9007199254740992. RangeErrorRangeErrorstartIndexNumberDébut de la plage d’index d’objets à ajouter au jeu Want. endIndexNumberFin de la plage d’index d’objets à ajouter au jeu Want. Ajoute des objets au jeu d’objets à extraire. Ajoute des objets depuis startIndex jusqu’à endIndex au jeu d’objets à extraire. Les index doivent être des nombres entiers compris entre 0 et 9 007 199 254 740 992. Par défaut, le jeu Want est vide.

Pour plus d’informations sur la réplication d’objets, voir la section "Replicate an object within a group" du guide Flash Media Server Developer’s Guide.

Cette méthode envoie un événement NetStatusEvent à l’écouteur d’événement de NetGroup avec NetGroup.Replication.Fetch.SendNotify dans la propriété info.code. Cet événement est suivi d’un événement NetGroup.Replication.Fetch.Failed ou NetGroup.Replication.Fetch.Result.

REMARQUE : testez l’événement NetGroup.Neighbor.Connect avant d’appeler cette méthode.

removeWantObjects()flash.events.NetStatusEvent.info.code="NetGroup.Replication.Fetch.SendNotify"flash.events.NetStatusEvent.info.code="NetGroup.Replication.Fetch.Failed"flash.events.NetStatusEvent.info.code="NetGroup.Replication.Fetch.Result"
close Se déconnecte du groupe et ferme cet objet NetGroup. Se déconnecte du groupe et ferme cet objet NetGroup. Il est impossible d’utiliser cet objet NetGroup après l’appel de cette méthode. convertPeerIDToGroupAddress Convertit un ID homologue en une adresse de groupe pouvant être utilisée avec la méthode sendToNearest().Adresse de groupe pour l’ID homologue. StringpeerIDStringID homologue à convertir. Convertit un ID homologue en une adresse de groupe pouvant être utilisée avec la méthode sendToNearest(). Convertit un ID homologue en une adresse de groupe pouvant être utilisée avec la méthode sendToNearest(). flash.net.NetConnection.farIDflash.net.NetConnection.nearIDflash.net.NetStream.farIDsendToNearest()denyRequestedObject Refuse une demande reçue dans l’événement NetGroup.Replication.Request d’un NetStatusEvent pour un objet précédemment annoncé avec addHaveObjects().requestIDintIdentifiant de la demande, tel qu’indiqué dans l’événement NetGroup.Replication.Request. Rejette la demande d’un objet précédemment annoncé. Refuse une demande reçue dans l’événement NetGroup.Replication.Request d’un NetStatusEvent pour un objet précédemment annoncé avec addHaveObjects(). Le demandant peut solliciter à nouveau cet objet à moins (ou jusqu’à ce) qu’il ne soit retiré du jeu Have.

Pour plus d’informations sur la réplication d’objets, voir la section "Replicate an object within a group" du guide Flash Media Server Developer’s Guide.

REMARQUE : testez l’événement NetGroup.Neighbor.Connect avant d’appeler cette méthode.

addHaveObjects()writeRequestedObject()flash.events.NetStatusEvent.info.code="NetGroup.Replication.Request"
post Envoie un message à tous les membres d’un groupe.L’ID de message correspondant au message, s’il est publié, ou null en cas d’erreur. L’ID de message est le code hexadécimal de l’algorithme SHA256 d’octets bruts de la sérialisation du message. StringmessageObjectMessage à envoyer à tous les autres membres du groupe. Envoie un message à tous les membres d’un groupe. Pour appeler cette méthode, la propriété GroupSpecifier.postingEnabled doit être définie sur true dans le groupspec transmis au constructeur de NetGroup. Pour plus d’informations, voir la section "Post messages to a group" du guide Flash Media Server Developer’s Guide.

Tous les messages doivent être uniques. Il est impossible de transmettre un message identique à l’un des messages envoyés précédemment. Utilisez un numéro de séquence pour rendre les messages uniques.

La remise des messages n’est pas préconisée. La remise des messages n’est pas garantie.

Les messages sont sérialisés au format AMF. Le message peut être de l’un des types suivants : Object, int, Number ou String. Le message ne peut pas être un objet MovieClip.

Cette méthode envoie un événement NetStatusEvent à l’écouteur d’événement de NetGroup avec "NetGroup.Posting.Notify" dans la propriété info.code. L’événement "NetGroup.Posting.Notify" est distribué à l’objet NetGroup sur le client et sur le serveur.

REMARQUE : testez l’événement NetGroup.Neighbor.Connect avant d’appeler cette méthode.

Il s’agit d’une application de dialogue en ligne simple qui utilise la mise en réseau homologue à homologue. L’application se connecte à Flash Media Server via RTMFP. Le serveur conserve les empreintes des applications clientes et gère le groupe d’homologues lors de la connexion des clients. Cependant, toutes les données sont envoyées entre les clients (homologues), elles ne sont pas renvoyées au serveur.

Lorsque vous exécutez l’application, vous pouvez indiquer n’importe quel nom de groupe dans le champ de saisie de texte. La classe GroupSpecifier utilise le nom (ainsi que toutes les propriétés que vous avez définies) pour créer une chaîne qui est le nom toujours unique du groupe. Pour connecter un autre client au groupe, ce client doit utiliser le même nom de groupe. Par exemple, si le client A utilise le nom de groupe « firstmesh », les autres clients qui souhaitent communiquer avec le client A doivent également utiliser le nom de groupe « firstmesh ». Si le client B utilise le nom de groupe « kite », il parviendra à se connecter, mais il créera un nouveau groupe et ne sera pas en mesure de communiquer avec le client A ou les membres du groupe « firstmesh ».

Pour exécuter cet exemple, ajoutez un composant Button, Label, TextInput et TextArea à la bibliothèque dans Flash Pro.

package { import flash.display.Sprite; import flash.events.TextEvent; import flash.events.MouseEvent; import flash.events.NetStatusEvent; import fl.events.ComponentEvent; import fl.controls.Label; import fl.controls.Button; import fl.controls.TextInput; import fl.controls.TextArea; import flash.text.TextFieldAutoSize; import flash.net.*; public class NetGroupPostExample extends Sprite{ private var connectButton:Button; private var disconnectButton:Button; private var groupNameText:TextInput; private var userNameText:TextInput; private var chatText:TextInput; private var statusLog:TextArea; private var groupLabel:Label; private var userLabel:Label; private var netConnection:NetConnection = null; private var netGroup:NetGroup = null; private var sequenceNumber:uint = 0; private var connected:Boolean = false; private var joinedGroup:Boolean = false; private const SERVER:String = "rtmfp://fms.example.com/someapp"; public function NetGroupPostExample() { DoUI(); } // Writes messages to the TextArea. private function StatusMessage(msg:Object):void{ statusLog.text += msg; statusLog.verticalScrollPosition = statusLog.textHeight; statusLog.validateNow(); } // Handles all NetStatusEvents for the NetConnection and the NetGroup. // This code includes cases it doesn't handle so you can see the cases // and their info objects for learning purposes. private function NetStatusHandler(e:NetStatusEvent):void{ StatusMessage(e.info.code + "\n"); switch(e.info.code){ case "NetConnection.Connect.Success": connectButton.enabled = false; disconnectButton.enabled = true; OnConnect(); break; case "NetConnection.Connect.Closed": OnDisconnect(); break; case "NetGroup.Connect.Success": // e.info.group OnNetGroupConnect(); break; case "NetGroup.Connect.Rejected": // e.info.group case "NetGroup.Connect.Failed": // e.info.group break; case "NetGroup.Posting.Notify": // e.info.message, e.info.messageID OnPosting(e.info.message); break; case "NetStream.MulticastStream.Reset": case "NetStream.Buffer.Full": break; case "NetGroup.SendTo.Notify": // e.info.message, e.info.from, e.info.fromLocal case "NetGroup.LocalCoverage.Notify": // case "NetGroup.Neighbor.Connect": // e.info.neighbor case "NetGroup.Neighbor.Disconnect": // e.info.neighbor case "NetGroup.MulticastStream.PublishNotify": // e.info.name case "NetGroup.MulticastStream.UnpublishNotify": // e.info.name case "NetGroup.Replication.Fetch.SendNotify": // e.info.index case "NetGroup.Replication.Fetch.Failed": // e.info.index case "NetGroup.Replication.Fetch.Result": // e.info.index, e.info.object case "NetGroup.Replication.Request": // e.info.index, e.info.requestID default: break; } } // Creates a NetConnection to Flash Media Server if the app isn't already connected // and if there's a group name in the TextInput field. private function DoConnect(e:MouseEvent):void{ if(!connected && (groupNameText.length > 0)){ StatusMessage("Connecting to \"" + SERVER + "\" ...\n"); netConnection = new NetConnection(); netConnection.addEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler); // To connect to Flash Media Server, pass the server name. netConnection.connect(SERVER); } else { StatusMessage("Enter a group name"); } } // Called in the "NetConnection.Connect.Success" case in the NetStatusEvent handler. private function OnConnect():void{ StatusMessage("Connected\n"); connected = true; // Create a GroupSpecifier object to pass to the NetGroup constructor. // The GroupSpecifier determines the properties of the group var groupSpecifier:GroupSpecifier; groupSpecifier = new GroupSpecifier("aslrexample/" + groupNameText.text); groupSpecifier.postingEnabled = true; groupSpecifier.serverChannelEnabled = true; netGroup = new NetGroup(netConnection, groupSpecifier.groupspecWithAuthorizations()); netGroup.addEventListener(NetStatusEvent.NET_STATUS, NetStatusHandler); StatusMessage("Join \"" + groupSpecifier.groupspecWithAuthorizations() + "\"\n"); } private function OnNetGroupConnect():void{ joinedGroup = true; } private function DoDisconnect(e:MouseEvent):void{ if(netConnection){ netConnection.close(); } } private function OnDisconnect():void{ StatusMessage("Disconnected\n"); netConnection = null; netGroup = null; connected = false; joinedGroup = false; connectButton.enabled = true; disconnectButton.enabled = false; } private function ClearChatText():void{ chatText.text = ""; } // Called when you the chatText field has focus and you press Enter. private function DoPost(e:ComponentEvent):void{ if(joinedGroup){ var message:Object = new Object; message.user = userNameText.text; message.text = chatText.text; message.sequence = sequenceNumber++; message.sender = netConnection.nearID; netGroup.post(message); StatusMessage("==> " + chatText.text + "\n"); } else { StatusMessage("Click Connect before sending a chat message"); } ClearChatText(); } private function OnPosting(message:Object):void{ StatusMessage("<" + message.user + "> " + message.text + "\n"); } private function DoUI():void { groupLabel = new Label(); groupLabel.move(20, 10); groupLabel.autoSize = TextFieldAutoSize.LEFT groupLabel.text = "Group name:" addChild(groupLabel); groupNameText = new TextInput(); groupNameText.move(90, 10); groupNameText.text = "channel" + (int(Math.random() * 899) + 101); addChild(groupNameText); connectButton = new Button(); connectButton.addEventListener(MouseEvent.CLICK, DoConnect); connectButton.move(205, 10); connectButton.label = "Connect"; addChild(connectButton); disconnectButton = new Button(); disconnectButton.addEventListener(MouseEvent.CLICK, DoDisconnect); disconnectButton.move(310, 10); disconnectButton.label = "Disconnect"; disconnectButton.enabled = false; addChild(disconnectButton); statusLog = new TextArea(); statusLog.move(30, 38); statusLog.width = 360; statusLog.height = 215; statusLog.editable = false; addChild(statusLog); userLabel = new Label(); userLabel.move(20, 270); userLabel.autoSize = TextFieldAutoSize.LEFT userLabel.text = "User name:" addChild(userLabel); userNameText = new TextInput(); userNameText.move(80, 270); userNameText.text = "user " + int(Math.random() * 65536); addChild(userNameText); chatText = new TextInput(); chatText.addEventListener(ComponentEvent.ENTER, DoPost); chatText.move(185, 270); chatText.maxChars = 255; chatText.width = 215; addChild(chatText); } public function onPlayStatus(info:Object):void {} public function onMetaData(info:Object):void {} public function onCuePoint(info:Object):void {} public function onTextData(info:Object):void {} } }
flash.events.NetStatusEvent.info.code="NetGroup.Posting.Notify"
removeHaveObjects Supprime des objets depuis startIndex jusqu’à endIndex du jeu d’objets qui répondent aux demandes, comme l’indique ce nœud aux voisins.Un nombre transmis à cette méthode est inférieur à 0 ou supérieur à 9007199254740992. RangeErrorRangeErrorstartIndexNumberDébut de la plage d’index d’objets à supprimer du jeu Have. endIndexNumberFin de la plage d’index d’objets à supprimer du jeu Have. Supprime des objets du jeu d’objets qui répondent aux demandes, comme l’indique ce nœud aux voisins. Supprime des objets depuis startIndex jusqu’à endIndex du jeu d’objets qui répondent aux demandes, comme l’indique ce nœud aux voisins. Les index doivent être des nombres entiers compris entre 0 et 9 007 199 254 740 992.

Pour plus d’informations sur la réplication d’objets, voir la section "Replicate an object within a group" du guide Flash Media Server Developer’s Guide.

REMARQUE : testez l’événement NetGroup.Neighbor.Connect avant d’appeler cette méthode.

addHaveObjects()
removeWantObjects Supprime des objets depuis startIndex jusqu’à endIndex du jeu d’objets à extraire.Un nombre transmis à cette méthode est inférieur à 0 ou supérieur à 9007199254740992. RangeErrorRangeErrorstartIndexNumberDébut de la plages d’index d’objets à supprimer du jeu Want. endIndexNumberFin de la plages d’index d’objets à supprimer du jeu Want. Supprime des objets du jeu d’objets à extraire. Supprime des objets depuis startIndex jusqu’à endIndex du jeu d’objets à extraire. Les index doivent être des nombres entiers compris entre 0 et 9 007 199 254 740 992.

Pour plus d’informations sur la réplication d’objets, voir la section "Replicate an object within a group" du guide Flash Media Server Developer’s Guide.

REMARQUE : testez l’événement NetGroup.Neighbor.Connect avant d’appeler cette méthode.

addWantObjects()
sendToAllNeighbors Envoie un message à tous les voisins.Propriété de la classe d’énumération NetGroupSendResult indiquant la réussite ou l’échec de l’envoi. StringmessageObjectMessage à envoyer. Envoie un message à tous les voisins. Renvoie NetGroupSendResult.SENT si au moins un voisin a été sélectionné.

Pour plus d’informations sur l’acheminement des messages, voir la section "Route messages directly to a peer" du guide Flash Media Server Developer’s Guide.

Lorsqu’un nœud reçoit un message, un événement NetStatusEvent est envoyé à l’écouteur d’événement de NetGroup avec NetGroup.SendTo.Notify dans la propriété code de l’objet info.

REMARQUE : testez l’événement NetGroup.Neighbor.Connect avant d’appeler cette méthode.

sendToNeighbor()flash.events.NetStatusEvent.info.code="NetGroup.SendTo.Notify"flash.net.NetGroupSendResult
sendToNearest Envoie un message au voisin (ou au nœud local) le plus proche de l’adresse de groupe spécifiée. Propriété de la classe d’énumération NetGroupSendResult indiquant la réussite ou l’échec de l’envoi. StringmessageObjectMessage à envoyer. groupAddressStringAdresse de groupe vers laquelle diriger le message. Envoie un message au voisin (ou au nœud local) le plus proche de l’adresse de groupe spécifiée. Prend en compte les voisins de l’ensemble de l’anneau. Renvoie NetGroupSendResult.SENT si le message a été correctement envoyé vers sa destination.

Pour plus d’informations sur l’acheminement des messages, voir la section "Route messages directly to a peer" du guide Flash Media Server Developer’s Guide.

Lorsqu’un nœud reçoit un message, un événement NetStatusEvent est envoyé à l’écouteur d’événement de NetGroup avec NetGroup.SendTo.Notify dans la propriété code de l’objet info.

REMARQUE : testez l’événement NetGroup.Neighbor.Connect avant d’appeler cette méthode.

convertPeerIDToGroupAddress()receiveModeflash.net.NetGroupSendResultflash.events.NetStatusEvent.info.code="NetGroup.SendTo.Notify"
sendToNeighbor Envoie un message au voisin spécifié par le paramètre sendMode.Propriété de la classe d’énumération NetGroupSendResult indiquant la réussite ou l’échec de l’envoi. StringmessageObjectMessage à envoyer. sendModeStringPropriété de la classe d’énumération NetGroupSendMode spécifiant le voisin auquel envoyer le message. Envoie un message au voisin spécifié par le paramètre sendMode. Envoie un message au voisin spécifié par le paramètre sendMode. Renvoie NetGroupSendResult.SENT si le message a été correctement envoyé vers la destination requise.

Pour plus d’informations sur l’acheminement des messages, voir la section "Route messages directly to a peer" du guide Flash Media Server Developer’s Guide.

Lorsqu’un nœud reçoit un message, un événement NetStatusEvent est envoyé à l’écouteur d’événement de NetGroup avec NetGroup.SendTo.Notify dans la propriété code de l’objet info.

REMARQUE : testez l’événement NetGroup.Neighbor.Connect avant d’appeler cette méthode.

sendToAllNeighbors()flash.events.NetStatusEvent.info.code="NetGroup.SendTo.Notify"flash.net.NetGroupSendModeflash.net.NetGroupSendResult
writeRequestedObject Répond à la requête dès qu’elle est reçue par NetStatusEvent NetGroup.Replication.Request pour un objet précédemment annoncé via la méthode addHaveObjects().requestIDintIdentifiant de la demande, tel qu’indiqué dans l’événement NetGroup.Replication.Request. objectObjectObjet correspondant à l’index fourni dans l’événement NetGroup.Replication.Request. Répond à la demande d’un objet précédemment annoncé. Répond à la demande dès sa réception par NetGroup.Replication.Request de NetStatusEvent pour un objet précédemment annoncé avec la méthode addHaveObjects(). L’objet peut être de l’un des types suivants : Object, int, Number et String. L’objet ne peut pas être un objet MovieClip.

Pour plus d’informations sur la réplication d’objets, voir la section "Replicate an object within a group" du guide Flash Media Server Developer’s Guide.

REMARQUE : testez l’événement NetGroup.Neighbor.Connect avant d’appeler cette méthode.

addHaveObjects()denyRequestedObject()flash.events.NetStatusEvent.info.code="NetGroup.Replication.Request"
estimatedMemberCount Indique le nombre approximatif de membres du groupe, en fonction de la densité du voisinage et d’une distribution uniforme des adresses de groupe.NumberIndique le nombre approximatif de membres du groupe. Indique le nombre approximatif de membres du groupe, en fonction de la densité du voisinage et d’une distribution uniforme des adresses de groupe. neighborCountinfo Renvoie un objet NetGroupInfo dont les propriétés fournissent des statistiques de qualité de service (QoS) liées à la transmission de données RTMFP homologue à homologue de cet objet NetGroup.flash.net:NetGroupInfoRenvoie un objet NetGroupInfo dont les propriétés fournissent des statistiques de qualité de service. Renvoie un objet NetGroupInfo dont les propriétés fournissent des statistiques de qualité de service (QoS) liées à la transmission de données RTMFP homologue à homologue de cet objet NetGroup. flash.net.NetGroupInfolocalCoverageFrom Spécifie le début de la plage d’adresses de groupe pour laquelle ce nœud est « le plus proche » et dont il est responsable.String Spécifie le début de la plage d’adresses de groupe pour laquelle ce nœud est « le plus proche » et dont il est responsable. La plage est spécifiée dans le sens ascendant le long de l’anneau d’adresses de groupe mod 2256. localCoverageToreceiveModesendToNearest()flash.events.NetStatusEvent.info.code="NetGroup.LocalCoverage.Notify"localCoverageTo Spécifie la fin de la plage d’adresses de groupe pour laquelle ce nœud est « le plus proche » et dont il est responsable.String Spécifie la fin de la plage d’adresses de groupe pour laquelle ce nœud est « le plus proche » et dont il est responsable. La plage est spécifiée dans le sens ascendant le long de l’anneau d’adresses de groupe mod 2256. localCoverageFromreceiveModesendToNearest()flash.events.NetStatusEvent.info.code="NetGroup.LocalCoverage.Notify"neighborCount Indique le nombre de membres du groupe auxquels ce nœud est directement connecté.NumberIndique le nombre de membres du groupe auxquels ce nœud est directement connecté. Indique le nombre de membres du groupe auxquels ce nœud est directement connecté. addNeighbor()estimatedMemberCountflash.events.NetStatusEvent.info.code="NetGroup.Neighbor.Connect"flash.events.NetStatusEvent.info.code="NetGroup.Neighbor.Disconnect"receiveMode Spécifie le mode de réception de routage de ce nœud comme étant l’une des valeurs de la classe d’énumération NetGroupReceiveMode.String Spécifie le mode de réception de routage de ce nœud comme étant l’une des valeurs de la classe d’énumération NetGroupReceiveMode. localCoverageFromlocalCoverageTosendToNearest()flash.net.NetGroupReceiveModereplicationStrategy Spécifie la stratégie d’extraction de la réplication d’objets. String Spécifie la stratégie d’extraction de la réplication d’objets. La valeur est l’une des valeurs énumérées dans la classe NetGroupReplicationStrategy. flash.net.NetGroupReplicationStrategy
getClassByAlias Recherche une classe pour laquelle un alias a été enregistré par le biais d’un appel de la méthode registerClassAlias().L’alias n’avait pas été enregistré. ReferenceErrorReferenceErrorClasse associée à l’alias indiqué. Si elle est introuvable, une exception est renvoyée. ClassaliasNameStringAlias à rechercher. Recherche une classe pour laquelle un alias a été enregistré par le biais d’un appel de la méthode registerClassAlias().

Cette méthode n’interagit pas avec la méthode flash.utils.getDefinitionByName().

registerClassAlias()
navigateToURL Ouvre ou remplace une fenêtre dans l’application qui héberge le conteneur Flash Player (en règle générale, un navigateur).La propriété digest de l’objet request n’est pas définie sur null. Vous devez définir la propriété digest d’un objet URLRequest uniquement lorsque vous appelez la méthode URLLoader.load() pour charger un fichier SWZ (composant de la plateforme Adobe). IOErrorflash.errors:IOErrorDans Flash Player (et dans le contenu d’un sandbox non-applicatif dans Adobe AIR), cette erreur est renvoyée dans les cas suivants :
  • Les fichiers SWF non approuvés au niveau local ne peuvent pas communiquer avec Internet. Pour contourner ce problème, reclassifiez le fichier SWF en tant que fichier local avec accès au réseau ou en tant que fichier approuvé.
  • Une opération de navigation a tenté d’évaluer une pseudo-URL de script, mais le document la contenant (en règle générale, un document HTML dans un navigateur) se trouve sur un sandbox auquel vous n’avez pas accès. Pour éviter ce cas de figure, spécifiez allowScriptAccess="always" dans le document conteneur.
  • Vous ne pouvez pas naviguer dans les fenêtres spéciales "_self", "_top" ou "_parent" si votre fichier SWF figure sur une page HTML qui règle allowScriptAccess sur "none" ou sur "sameDomain" alors que les fichiers HTML et SWF n’appartiennent pas au même domaine.
  • Vous ne pouvez pas naviguer, à partir d’un fichier SWF se trouvant sur le sandbox local avec système de fichiers, dans une fenêtre dont le nom n’est pas le nom par défaut.
  • 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.
SecurityErrorSecurityError
Si la méthode n’est pas appelée en réponse à l’action d’un utilisateur, notamment à un événement de type souris ou pression de touche. Cette condition ne s’applique qu’au contenu dans Flash Player et au contenu d’un sandbox non-applicatif dans Adobe AIR. ErrorErrorrequestflash.net:URLRequestObjet URLRequest indiquant l’URL à atteindre.

Pour le contenu s’exécutant dans Adobe AIR, lors de l’utilisation de la fonction navigateToURL(), le moteur d’exécution traite un objet URLRequest qui utilise la méthode POST (objet dont la propriété method est définie sur URLRequestMethod.POST) comme s’il utilisait la méthode GET.

windowStringnullFenêtre de navigateur ou cadre HTML dans lequel afficher le document désigné par le paramètre request. Vous pouvez entrer le nom d’une fenêtre spécifique ou utiliser l’une des valeurs suivantes :
  • "_self" indique le cadre qui est actif dans la fenêtre ouverte.
  • "_blank" indique une nouvelle fenêtre.
  • "_parent" indique le parent du cadre actif.
  • "_top" désigne le cadre de plus haut niveau dans la fenêtre ouverte.

Si vous ne renseignez pas la valeur de ce paramètre, une fenêtre vide est créée. Dans le lecteur autonome, vous pouvez spécifier une nouvelle fenêtre ("_blank") ou une fenêtre nommée. Les autres valeurs ne sont pas applicables.

Remarque : si le code d’un fichier SWF s’exécutant dans le sandbox local avec système de fichiers appelle la fonction navigateToURL() et spécifie un nom de fenêtre personnalisé pour le paramètre window, le nom de la fenêtre est transféré en tant que nom aléatoire. Le format du nom est "_flashXXXXXXXX", où chaque X représente un chiffre hexadécimal aléatoire. Au sein de la même session (jusqu’à ce que vous fermiez la fenêtre du navigateur), si vous rappelez la fonction et spécifiez le même nom pour le paramètre window, la même chaîne aléatoire est utilisée.

Ouvre ou remplace une fenêtre dans l’application qui héberge le conteneur Flash Player (en règle générale, un navigateur). Dans Adobe AIR, la fonction ouvre une URL dans le navigateur Web par défaut du système

Remarque de sécurité importante

Les développeurs transmettent souvent des valeurs d’URL à la fonction navigateToURL() obtenues à partir de source externes, telles que FlashVars. Il est possible que des pirates informatiques tentent de manipuler ces sources externes, notamment par programmation croisée. Par conséquent, les développeurs doivent valider toutes les URL avant de les transmettre à la fonction.

Il existe plusieurs façons de valider correctement les données d’URL selon l’utilisation des URL dans l’application. L’une des techniques de validation de données les plus courantes consiste à vérifier que l’URL appartient au modèle d’URL adéquat. Par exemple, l’autorisation non intentionnelle d’URL javascript: peut entraîner des manipulations par programmation croisée. Vous pouvez également vérifier que l’URL se trouve dans votre domaine afin de vous assurer que les personnes qui pratiquent l’hameçonnage ne puissent pas utiliser le fichier SWF comme redirecteur ouvert. Pour plus de sécurité, vous pouvez par ailleurs choisir de valider le chemin de l’URL et de vérifier que l’URL est conforme aux RFC.

Le code suivant montre un exemple simple de validation de données : toute URL ne commençant pas par http:// ou https:// est rejetée et les URL sont analysées afin de vérifier qu’elles se trouvent dans votre nom de domaine. Il est possible que cet exemple ne soit pas valable pour toutes les applications Web ; vous devez donc évaluer s’il est nécessaire de procéder à des vérifications supplémentaires.

// AS3 Regular expression pattern match for URLs that start with http:// and https:// plus your domain name. function checkProtocol (flashVarURL:String):Boolean { // Get the domain name for the SWF if it is not known at compile time. // If the domain is known at compile time, then the following two lines can be replaced with a hard coded string. var my_lc:LocalConnection = new LocalConnection(); var domainName:String = my_lc.domain; // Build the RegEx to test the URL. // This RegEx assumes that there is at least one "/" after the // domain. http://www.mysite.com will not match. var pattern:RegExp = new RegExp("^http[s]?\:\\/\\/([^\\/]+)\\/"); var result:Object = pattern.exec(flashVarURL); if (result == null || result[1] != domainName || flashVarURL.length >= 4096) { return (false); } return (true); }

Dans le cas d’un contenu local s’exécutant dans un navigateur, les appels à la méthode navigateToURL() qui spécifient un pseudo-protocole "javascript:" (via un objet URLRequest transmis en tant que premier paramètre) ne sont autorisés que si le fichier SWF et la page Web qui le contient (le cas échéant) se trouvent dans le sandbox de sécurité approuvé localement. Certains navigateurs ne prennent pas en charge l’utilisation du protocole javascript avec la méthode navigateToURL(). Envisagez plutôt d’utiliser la méthode call() de l’API ExternalInterface pour appeler les méthodes JavaScript dans la page HTML.

Dans Flash Player et dans les sandbox non-applicatifs d’Adobe AIR, vous ne pouvez pas utiliser les ports habituellement 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.

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

Dans Flash Player versions 10 et ultérieures, si vous utilisez un Content-Type en plusieurs parties (par exemple « multipart/form-data ») qui contient un chargement (indiqué par un paramètre « filename » dans un en-tête « content-disposition » au sein du corps POST), l’opération POST est soumise aux règles de sécurité appliquées aux chargements :

  • L’opération POST doit être effectuée en réponse à l’action d’un utilisateur, comme un clic de souris ou la pression d’une touche.
  • Si l’opération POST se fait entre plusieurs domaines (la cible POST ne se trouve pas sur le même serveur que le fichier SWF qui envoie la demande POST), le serveur cible doit fournir un fichier de régulation d’URL qui permette l’accès interdomaines.

Par ailleurs, la syntaxe de tous les Content-Type en plusieurs parties doit être correcte (selon la norme RFC2046). Si la syntaxe s’avère incorrecte, l’opération POST est soumise aux règles de sécurité appliquées aux chargements.

Dans AIR installé sur les plates-formes mobiles, les modèles d’URI sms: et tel: sont pris en charge. Sous Android, les modèles d’URI vipaccess:, connectpro: et market: sont pris en charge. La syntaxe de l’URL est soumise aux conventions de la plate-forme. Par exemple, sur Android, le modèle d’URI doit être en minuscules. Lorsque vous accédez à une URL à l’aide de l’un de ces modèles, le moteur d’exécution ouvre l’URL dans l’application par défaut pour la gérer le modèle. Ainsi, l’accès à tel:+5555555555 ouvre le numéroteur téléphonique avec le numéro spécifié déjà saisi. Une autre application ou un autre utilitaire, par exemple un numéroteur téléphonique, doit être disponible pour traiter l’URL.

Le code suivant explique comment appeler les applications VIP Access et Connect Pro sous Android :

//Invoke the VIP Access Application. navigateToURL(new URLRequest("vipaccess://com.verisign.mvip.main?action=securitycode")); //Invoke the Connect Pro Application. navigateToURL(new URLRequest("connectpro://"));
L’exemple suivant ouvre l’URL http://www.adobe.com dans une nouvelle fenêtre de navigateur et transmet au serveur Web des données relatives à une session utilisateur, capturées dans un objet URLVariables. package { import flash.display.Sprite; import flash.net.navigateToURL; import flash.net.URLRequest; import flash.net.URLVariables; public class NavigateToURLExample extends Sprite { public function NavigateToURLExample() { var url:String = "http://www.adobe.com"; var variables:URLVariables = new URLVariables(); variables.exampleSessionId = new Date().getTime(); variables.exampleUserLabel = "Your Name"; var request:URLRequest = new URLRequest(url); request.data = variables; try { navigateToURL(request); } catch (e:Error) { // handle error here } } } } L’exemple suivant indique comment ouvrir de nouvelles fenêtres de navigateur à partir de Flash Player à l’aide de la méthode navigateToURL(). Exemple fourni par ActionScriptExamples.com. // Requires // - Button symbol on Stage (or a display object, such as a MovieClip) with instance name "buttonSymbol" // buttonSymbol.addEventListener(MouseEvent.CLICK, buttonSymbol_click); function buttonSymbol_click(evt:MouseEvent):void { var req:URLRequest = new URLRequest("http://www.adobe.com/"); navigateToURL(req, "_blank"); } L’exemple suivant illustre la syntaxe permettant d’activer le numéroteur téléphonique du périphérique avec un numéro spécifique. var request:URLRequest = new URLRequest( "tel:+5555555555" ); navigateToURL( request ); L’exemple suivant illustre la syntaxe permettant d’ouvrir l’application SMS du périphérique avec un destinataire spécifique. var request:URLRequest = new URLRequest( "sms:+5555555555" ); navigateToURL( request ); L’exemple suivant illustre la syntaxe permettant d’ouvrir l’application d’Android Market. Le paramètre de recherche est défini pour trouver l’application Flash Player. var request:URLRequest = new URLRequest( "market://search?q=pname:com.adobe.flashplayer" ); navigateToURL( request );
flash.external.ExternalInterface.call()
registerClassAlias Préserve la classe (type) d’un objet lors de son codage au format AMF (Action Message Format).Indique si l’un ou l’autre des paramètres est réglé sur null. TypeErrorTypeErroraliasNameStringAlias à utiliser. classObjectClassClasse associée à l’alias indiqué. Préserve la classe (type) d’un objet lors de son codage au format AMF (Action Message Format). Lorsque vous codez un objet au format AMF, cette fonction enregistre l’alias de sa classe, ce qui vous permet de la récupérer lors du décodage de l’objet. Si le contexte d’encodage n’a pas enregistré d’alias pour la classe d’un objet, celui-ci est codé en tant qu’objet anonyme. De même, si l’alias n’est pas enregistré dans le contexte de décodage, un objet anonyme est créé au décodage.

Toutes les classes LocalConnection, ByteArray, SharedObject, NetConnection et NetStream codent les objets au format AMF.

Il n’est pas nécessaire que les contextes utilisent une même classe pour un alias. Ils peuvent changer de classe intentionnellement, à condition que la classe de destination contienne tous les membres sérialisés par la classe source.

Cet exemple utilise la fonction registerClassAlias() pour enregistrer un alias (com.example.eg) pour la classe ExampleClass. Un alias étant enregistré pour la classe, l’objet peut être désérialisé en tant qu’occurrence de la classe ExampleClass, et le code renvoie true. Si l’appel de registerClassAlias() était supprimé, le code renverrait false. package { import flash.display.Sprite; import flash.net.registerClassAlias; import flash.utils.ByteArray; public class RegisterClassAliasExample extends Sprite { public function RegisterClassAliasExample() { registerClassAlias("com.example.eg", ExampleClass); var eg1:ExampleClass = new ExampleClass(); var ba:ByteArray = new ByteArray(); ba.writeObject(eg1); ba.position = 0; var eg2:* = ba.readObject(); trace(eg2 is ExampleClass); // true } } } class ExampleClass {}
Classe ObjectEncoding
sendToURL Envoie une requête d’URL à un serveur, mais ne tient pas compte de la réponse.Les fichiers SWF locaux et non approuvés ne peuvent pas communiquer avec Internet. Pour contourner ce problème, reclassifiez le fichier SWF en tant que fichier local avec accès au réseau ou en tant que fichier approuvé. SecurityErrorSecurityErrorVous 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. SecurityErrorSecurityErrorrequestflash.net:URLRequestObjet URLRequest indiquant l’URL à laquelle envoyer des données. Envoie une requête d’URL à un serveur, mais ne tient pas compte de la réponse.

Pour examiner la réponse du serveur, utilisez plutôt la méthode URLLoader.load().

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.

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.

Dans Flash Player versions 10 et ultérieures, si vous utilisez un Content-Type en plusieurs parties (par exemple « multipart/form-data ») qui contient un chargement (indiqué par un paramètre « filename » dans un en-tête « content-disposition » au sein du corps POST), l’opération POST est soumise aux règles de sécurité appliquées aux chargements :

  • L’opération POST doit être effectuée en réponse à l’action d’un utilisateur, comme un clic de souris ou la pression d’une touche.
  • Si l’opération POST se fait entre plusieurs domaines (la cible POST ne se trouve pas sur le même serveur que le fichier SWF qui envoie la demande POST), le serveur cible doit fournir un fichier de régulation d’URL qui permette l’accès interdomaines.

Par ailleurs, la syntaxe de tous les Content-Type en plusieurs parties doit être correcte (selon la norme RFC2046). Si la syntaxe s’avère incorrecte, l’opération POST est soumise aux règles de sécurité appliquées aux chargements.

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

L’exemple suivant transmet des données relatives à une session utilisateur, capturées dans un objet URLVariables, à l’application qui se trouve à l’adresse http://www.yourDomain.com/application.jsp. package { import flash.display.Sprite; import flash.net.URLRequest; import flash.net.URLVariables; import flash.net.sendToURL; public class SendToURLExample extends Sprite { public function SendToURLExample() { var url:String = "http://www.yourDomain.com/application.jsp"; var variables:URLVariables = new URLVariables(); variables.sessionId = new Date().getTime(); variables.userLabel = "Your Name"; var request:URLRequest = new URLRequest(url); request.data = variables; trace("sendToURL: " + request.url + "?" + request.data); try { sendToURL(request); } catch (e:Error) { // handle error here } } } }
NetGroupReceiveMode La classe NetGroupReceiveMode est une énumération des valeurs constantes utilisées pour la propriété receiveMode de la classe NetGroup.Enumération des valeurs constantes utilisées pour la propriété receiveMode de la classe NetGroup. Object La classe NetGroupReceiveMode est une énumération des valeurs constantes utilisées pour la propriété receiveMode de la classe NetGroup. flash.net.NetGroup.receiveModeflash.net.NetGroup.sendToNearest()EXACT Indique que ce nœud prend en charge les messages locaux des voisins uniquement si l’adresse qu’utilise le voisin correspond exactement à l’adresse de ce nœud.exactString Indique que ce nœud prend en charge les messages locaux des voisins uniquement si l’adresse qu’utilise le voisin correspond exactement à l’adresse de ce nœud. En d’autres termes, ce nœud se considère lui-même comme le nœud le plus proche de tout appel de la méthode NetGroup.sendToNearest() uniquement si le paramètre groupAddress transmis à NetGroup.sendToNearest() correspond à l’adresse de groupe de ce nœud. Cette valeur est le paramètre par défaut.

Si vous souhaitez activer le comportement de routage direct, définissez cette valeur sur NetGroupReceiveMode.NEAREST. Lorsque cette valeur est ainsi définie, un nœud attend que sa connectivité se stabilise avant de participer au maillage de routage direct.

flash.net.NetGroup.sendToNearest()
NEAREST Indique que ce nœud prend en charge les messages locaux de voisins qui envoient des messages à des adresses de groupe ne correspondant pas exactement à cette adresse de nœud.nearestString Indique que ce nœud prend en charge les messages locaux de voisins qui envoient des messages à des adresses de groupe ne correspondant pas exactement à cette adresse de nœud. Les messages sont reçus lorsque ce nœud est le plus proche parmi tous les voisins dont le mode de réception est défini sur NetGroupReceiveMode.NEAREST. La distance est mesurée entre les adresses sur l’anneau mod 2256. flash.net.NetGroup.sendToNearest()
Responder La classe Responder fournit un objet utilisé dans NetConnection.call() pour gérer les valeurs renvoyées par le serveur selon la réussite ou l’échec de certaines opérations.Object La classe Responder fournit un objet utilisé dans NetConnection.call() pour gérer les valeurs renvoyées par le serveur selon la réussite ou l’échec de certaines opérations. Lors de l’utilisation de NetConnection.call(), il se peut que vous rencontriez une erreur d’opération réseau spécifique à l’opération en cours ou une erreur liée à l’état actuel de la connexion. Les erreurs d’opération ciblent l’objet Responder et non l’objet NetConnection pour faciliter le traitement des erreurs. NetConnection.call()Responder Crée un objet Responder.resultFunctionFonction invoquée si l’appel du serveur aboutit et renvoie un résultat. statusFunctionnullFonction appelée si le serveur renvoie une erreur. Crée un objet Responder. Vous transmettez un objet Responder à la méthode NetConnection.call() pour gérer les valeurs renvoyées par le serveur. Vous pouvez transmettre la valeur null pour l’un et/ou l’autre des paramètres. URLRequestHeader Un objet URLRequestHeader encapsule un en-tête de requête HTTP unique et se compose d’une paire nom/valeur.Object Un objet URLRequestHeader encapsule un en-tête de requête HTTP unique et se compose d’une paire nom/valeur. Les objets URLRequestHeader sont utilisés dans la propriété requestHeaders de la classe URLRequest.

Dans Adobe® AIR®, le contenu du sandbox de sécurité de l’application (par exemple, le contenu installé avec l’application AIR) peut utiliser n’importe quel en-tête de requête, sans qu’aucune erreur ne se produise. En revanche, dans le cas de contenu s’exécutant dans Adobe AIR et se trouvant dans un sandbox de sécurité différent ou dans le cas de contenu s’exécutant dans Flash® Player, l’utilisation de ces en-têtes de requête entraîne le renvoi d’une erreur d’exécution ; en outre, les termes restreints ne sont pas sensibles à la casse (par exemple, Get, get et GET ne sont pas tous autorisés) :

Dans le cas de contenu s’exécutant dans Flash Player ou de contenu s’exécutant dans Adobe AIR hors du sandbox de sécurité de l’application, les en-têtes de requête suivants ne peuvent pas être utilisés et les termes restreints ne sont pas sensibles à la casse (par exemple, Get, get et GET ne sont pas tous autorisés). De même, les termes composés s’appliquent lorsqu’un caractère de soulignement est utilisé (par exemple, Content-Length et Content_Length ne sont pas autorisés tous les deux) :

Accept-Charset, Accept-Encoding, Accept-Ranges, Age, Allow, Allowed, Authorization, Charge-To, Connect, Connection, Content-Length, Content-Location, Content-Range, Cookie, Date, Delete, ETag, Expect, Get, Head, Host, If-Modified-Since, Keep-Alive, Last-Modified, Location, Max-Forwards, Options, Origin, Post, Proxy-Authenticate, Proxy-Authorization, Proxy-Connection, Public, Put, Range, Referer, Request-Range, Retry-After, Server, TE, Trace, Trailer, Transfer-Encoding, Upgrade, URI, User-Agent, Vary, Via, Warning, WWW-Authenticate, x-flash-version.

La longueur des objets URLRequestHeader est limitée. Si la longueur totale d’un objet URLRequestHeader (longueur de la propriété name et de la propriété value) ou d’un tableau d’objets URLRequestHeader utilisé dans la propriété URLRequest.requestHeaders est supérieure à la longueur prise en charge, une exception est renvoyée.

Le contenu s’exécutant dans Adobe AIR définit l’en-tête ACCEPT de la façon suivante, à moins que vous ne spécifiez un paramètre pour l’en-tête ACCEPT dans la propriété requestHeaders de la classe URLRequest :

text/xml, application/xml, application/xhtml+xml, text/html;q=0.9, text/plain;q=0.8, image/png, application/x-shockwave-flash, video/mp4;q=0.9, flv-application/octet-stream;q=0.8, video/x-flv;q=0.7, audio/mp4, ~~/~~;q=0.5

Toutes les méthodes qui acceptent des paramètres URLRequest ne prennent pas en charge la propriété requestHeaders ; consultez la documentation de la méthode que vous appelez. Par exemple, les méthodes FileReference.upload() et FileReference.download() ne prennent pas en charge la propriété URLRequest.requestHeaders.

Du fait des limites des navigateurs, les en-têtes de requête HTTP personnalisées ne sont prises en charge que pour les requêtes POST, pas pour les requêtes GET.

L’exemple suivant ajoute un seul en-tête de requête HTTP header au tableau de la propriété requestHeaders. L’en-tête indique que l’application doit transférer la requête au serveur d’origine, même si elle en possède une copie mise en cache. package { import flash.display.Sprite; import flash.events.*; import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLRequestHeader; import flash.net.URLRequestMethod; import flash.net.URLVariables; public class URLRequestHeaderExample extends Sprite { public function URLRequestHeaderExample() { var loader:URLLoader = new URLLoader(); configureListeners(loader); var header:URLRequestHeader = new URLRequestHeader("pragma", "no-cache"); var request:URLRequest = new URLRequest("http://www.[yourdomain].com/greeting.cfm"); request.data = new URLVariables("name=John+Doe"); request.method = URLRequestMethod.POST; request.requestHeaders.push(header); try { loader.load(request); } catch (error:Error) { trace("Unable to load requested document."); } } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); } private function completeHandler(event:Event):void { var loader:URLLoader = URLLoader(event.target); trace("completeHandler: " + loader.data); } private function openHandler(event:Event):void { trace("openHandler: " + event); } private function progressHandler(event:ProgressEvent):void { trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function httpStatusHandler(event:HTTPStatusEvent):void { trace("httpStatusHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } } }
URLRequestURLLoaderURLRequestHeader Crée un objet URLRequestHeader qui encapsule un en-tête de requête HTTP unique.nameStringNom d’en-tête de requête HTTP (Content-Type ou SOAPAction, par exemple). valueStringValeur associée à la propriété name (text/plain, par exemple). Crée un objet URLRequestHeader qui encapsule un en-tête de requête HTTP unique. Les objets URLRequestHeader sont utilisés dans la propriété requestHeaders de la classe URLRequest. name Nom d’en-tête de requête HTTP (tel que Contenu-Type ou SOAPAction).String Nom d’en-tête de requête HTTP (Content-Type ou SOAPAction, par exemple). value Valeur associée à la propriété name (telle que text/plain).String Valeur associée à la propriété name (text/plain, par exemple).
URLRequestMethod La classe URLRequestMethod fournit des valeurs qui spécifient si l’objet URLRequest doit utiliser la méthode POST ou GET pour envoyer des données à un serveur.Object La classe URLRequestMethod fournit des valeurs qui spécifient si l’objet URLRequest doit utiliser la méthode POST ou GET pour envoyer des données à un serveur. L’exemple suivant charge et affiche les données détectées dans un fichier texte local. Il assure également le suivi des informations de gestion des événements.

Remarque : pour exécuter cet exemple, placez un fichier nommé example.txt dans le même répertoire que votre fichier SWF. Il doit s’agir d’un fichier de texte contenant simplement quelques mots ou lignes de texte.

Le code de l’exemple effectue les opérations suivantes :

  1. La fonction constructeur crée une occurrence de URLLoader nommée loader.
  2. L’objet loader est transmis à la méthode configureListeners(), qui ajoute des écouteurs à chacun des événements URLLoader pris en charge.
  3. Une occurrence de URLRequest appelée request est créée. Elle représente le nom du fichier à charger.
  4. La propriété method de la requête est définie sur URLRequestMethod.POST.
  5. L’objet request est ensuite transmis à la méthode loader.load(), qui charge le fichier texte.
  6. Lorsque l’URLLoader a terminé de chargé le fichier texte, l’événement Event.COMPLETE se produit et déclenche la méthode completeHandler(). La méthode completeHandler() recherche simplement la propriété data, qui représente le contenu du fichier.
package { import flash.display.Sprite; import flash.events.*; import flash.net.*; public class URLRequestMethodExample extends Sprite { public function URLRequestMethodExample() { var loader:URLLoader = new URLLoader(); configureListeners(loader); var request:URLRequest = new URLRequest("example.txt"); request.method = URLRequestMethod.POST; loader.load(request); } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); } private function completeHandler(event:Event):void { var loader:URLLoader = URLLoader(event.target); trace("completeHandler: " + loader.data); } private function openHandler(event:Event):void { trace("openHandler: " + event); } private function progressHandler(event:ProgressEvent):void { trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function httpStatusHandler(event:HTTPStatusEvent):void { trace("httpStatusHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } } }
URLRequestURLVariablesDELETE Indique que l’objet URLRequest correspond à DELETE.DELETEStringIndique que l’objet URLRequest correspond à DELETE. Indique que l’objet URLRequest correspond à DELETE. GET Indique que l’objet URLRequest correspond à GET.GETStringIndique que l’objet URLRequest correspond à GET. Indique que l’objet URLRequest correspond à GET. HEAD Indique que l’objet URLRequest correspond à HEAD.HEADStringIndique que l’objet URLRequest correspond à HEAD. Indique que l’objet URLRequest correspond à HEAD. OPTIONS Indique que l’objet URLRequest correspond à OPTIONS.OPTIONSStringIndique que l’objet URLRequest correspond à OPTIONS. Indique que l’objet URLRequest correspond à OPTIONS. POST Indique que l’objet URLRequest correspond à POST.POSTStringIndique que l’objet URLRequest correspond à POST. Indique que l’objet URLRequest correspond à POST.

Remarque : pour le contenu s’exécutant dans Adobe AIR, lors de l’utilisation de la fonction navigateToURL(), le moteur d’exécution traite un objet URLRequest qui utilise la méthode POST (objet dont la propriété method est définie sur URLRequestMethod.POST) comme s’il utilisait la méthode GET.

PUT Indique que l’objet URLRequest correspond à PUT.PUTStringIndique que l’objet URLRequest correspond à PUT. Indique que l’objet URLRequest correspond à PUT.
FileReference La classe FileReference permet de charger et télécharger des fichiers entre l’ordinateur d’un utilisateur et un serveur.flash.events:EventDispatcher La classe FileReference permet de charger et télécharger des fichiers entre l’ordinateur d’un utilisateur et un serveur. Une boîte de dialogue du système d’exploitation invite l’utilisateur à sélectionner un fichier pour le charger ou à choisir un emplacement pour le télécharger. Chaque objet FileReference fait référence à un seul fichier sur le disque dur de l’utilisateur et inclut des propriétés contenant des informations sur la taille, le type, le nom, la date de création, la date de modification et le type de créateur (Macintosh uniquement) du fichier.

Remarque : dans Adobe AIR, la classe File, qui étend la classe FileReference, offre davantage de fonctionnalités et moins de restrictions de sécurité que la classe FileReference.

Les occurrences de FileReference sont créées de diverses manières :

  • Lorsque vous utilisez l’opérateur new avec le constructeur FileReference : var myFileReference = new FileReference();
  • Lorsque vous appelez la méthode FileReferenceList.browse(), ce qui crée un tableau d’objets FileReference.

Pendant une opération de chargement, toutes les propriétés d’un objet FileReference sont renseignées par des appels des méthodes FileReference.browse() ou FileReferenceList.browse(). Pendant une opération de téléchargement, la propriété name est renseignée lors de la distribution de l’événement select. Toutes les autres propriétés sont renseignées lors de la distribution de l’événement complete.

La méthode browse() ouvre une boîte de dialogue du système d’exploitation qui invite l’utilisateur à sélectionner un fichier en vue de le charger. La méthode FileReference.browse() permet à l’utilisateur de choisir un seul fichier ; la méthode FileReferenceList.browse() lui permet d’en sélectionner plusieurs. Lorsque l’appel de la méthode browse() a réussi, appelez la méthode FileReference.upload() pour charger un seul fichier à la fois. La méthode FileReference.download() invite l’utilisateur à sélectionner un emplacement pour enregistrer le fichier et initialise le téléchargement à partir d’une URL distante.

Les classes FileReference et FileReferenceList ne vous permettent pas de définir un emplacement de fichier par défaut pour la boîte de dialogue générée par les méthodes browse() et download(). L’emplacement par défaut indiqué dans la boîte de dialogue est le dernier dossier parcouru, dans la mesure où il est possible de déterminer cet emplacement, ou le Bureau. Les classes ne vous permettent pas d’accéder aux fichiers transférés en lecture ou en écriture. Elles ne permettent pas au fichier SWF qui a initié le chargement ou le téléchargement d’accéder au fichier chargé ou à l’emplacement du fichier sur le disque de l’utilisateur.

Par ailleurs, les classes FileReference et FileReferenceList ne proposent pas de méthode d’authentification. Pour les serveurs ayant besoin d’une authentification, vous pouvez télécharger des fichiers avec le plug-in de navigation de Flash® Player, mais le chargement (sur tous les lecteurs) et le téléchargement (sur les lecteurs autonomes ou externes) échouent. Utilisez les écouteurs d’événement FileReference afin de déterminer si les opérations ont réussi, ou non, et pour traiter les erreurs.

Dans le cas de contenus s’exécutant dans Flash Player ou Adobe AIR hors du sandbox de sécurité de l’application, les opérations de chargement ou de téléchargement permettent d’accéder uniquement aux fichiers de leur propre domaine et de tous les domaines spécifiés par un fichier de régulation d’URL. Si le contenu qui initialise le chargement ou le téléchargement n’appartient pas au même domaine que le serveur de fichiers, placez un fichier de régulation dans ce dernier.

Notez que lors de la publication dans Flash Player 10, les nouvelles fonctionnalités ajoutées au lecteur ne vous permettent d’exécuter qu’une seule opération à la fois : FileReference.browse(), FileReference.upload(), FileReference.download(), FileReference.load() ou FileReference.save(). Dans le cas contraire, Flash Player renvoie une erreur d’exécution (code 2174). Utilisez FileReference.cancel() pour arrêter une opération en cours. Cette restriction s’applique uniquement à Flash Player 10. Cette restriction sur l’exécution simultanée de plusieurs opérations ne s’applique pas aux versions précédentes de Flash Player.

Pendant l’exécution des appels aux méthodes FileReference.browse(), FileReferenceList.browse() ou FileReference.download(), la lecture du fichier SWF s’interrompt dans les versions autonomes et externes de Flash Player et AIR pour Linux, et Mac OS X version 10.1 et antérieures.

Flash Player envoie la requête HTTP POST suivante, par exemple, à un script côté serveur en l’absence de paramètres :

  POST /handler.cfm HTTP/1.1 
  Accept: text/~~
  Content-Type: multipart/form-data; 
  boundary=----------Ij5ae0ae0KM7GI3KM7 
  User-Agent: Shockwave Flash 
  Host: www.example.com 
  Content-Length: 421 
  Connection: Keep-Alive 
  Cache-Control: no-cache
  
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7
  Content-Disposition: form-data; name="Filename"
  
  MyFile.jpg
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7
  Content-Disposition: form-data; name="Filedata"; filename="MyFile.jpg"
  Content-Type: application/octet-stream
  
  FileDataHere
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7
  Content-Disposition: form-data; name="Upload"
  
  Submit Query
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7--
  

Flash Player envoie la requête HTTP POST suivante si l’utilisateur spécifie les paramètres api_sig, api_key et auth_token :

  POST /handler.cfm HTTP/1.1 
  Accept: text/~~
  Content-Type: multipart/form-data; 
  boundary=----------Ij5ae0ae0KM7GI3KM7 
  User-Agent: Shockwave Flash 
  Host: www.example.com 
  Content-Length: 421 
  Connection: Keep-Alive 
  Cache-Control: no-cache
  
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7
  Content-Disposition: form-data; name="Filename"
  
  MyFile.jpg
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7
  Content-Disposition: form-data; name="api_sig"
  
  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7
  Content-Disposition: form-data; name="api_key"
  
  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7
  Content-Disposition: form-data; name="auth_token"
  
  XXXXXXXXXXXXXXXXXXXXXX
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7
  Content-Disposition: form-data; name="Filedata"; filename="MyFile.jpg"
  Content-Type: application/octet-stream
  
  FileDataHere
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7
  Content-Disposition: form-data; name="Upload"
  
  Submit Query
  ------------Ij5GI3GI3ei4GI3ei4KM7GI3KM7KM7--
  
L’exemple suivant affiche le format de données et l’état d’un fichier chargé à l’exécution.

Remarque : pour exécuter cet exemple, modifiez la propriété uploadURL.url pour qu’elle pointe sur une URL réelle, au lieu de l’adresse fictive de l’exemple. L’URL doit pointer sur un fichier nommé yourUploadHandlerScript.cfm dans le répertoire Web racine de l’URL spécifiée. Selon votre configuration, vous aurez peut-être besoin de compiler le fichier SWF avec l’option Protection de lecture locale définie sur Accéder au réseau seulement ou de mettre à jour vos paramètres de sécurité Flash Player pour autoriser ce fichier à accéder au réseau.

package { import flash.display.Sprite; import flash.events.*; import flash.net.FileFilter; import flash.net.FileReference; import flash.net.URLRequest; public class FileReferenceExample extends Sprite { private var uploadURL:URLRequest; private var file:FileReference; public function FileReferenceExample() { uploadURL = new URLRequest(); uploadURL.url = "http://www.[yourDomain].com/yourUploadHandlerScript.cfm"; file = new FileReference(); configureListeners(file); file.browse(getTypes()); } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.CANCEL, cancelHandler); dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); dispatcher.addEventListener(Event.SELECT, selectHandler); dispatcher.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,uploadCompleteDataHandler); } private function getTypes():Array { var allTypes:Array = new Array(getImageTypeFilter(), getTextTypeFilter()); return allTypes; } private function getImageTypeFilter():FileFilter { return new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)", "*.jpg;*.jpeg;*.gif;*.png"); } private function getTextTypeFilter():FileFilter { return new FileFilter("Text Files (*.txt, *.rtf)", "*.txt;*.rtf"); } private function cancelHandler(event:Event):void { trace("cancelHandler: " + event); } private function completeHandler(event:Event):void { trace("completeHandler: " + event); } private function uploadCompleteDataHandler(event:DataEvent):void { trace("uploadCompleteData: " + event); } private function httpStatusHandler(event:HTTPStatusEvent):void { trace("httpStatusHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } private function openHandler(event:Event):void { trace("openHandler: " + event); } private function progressHandler(event:ProgressEvent):void { var file:FileReference = FileReference(event.target); trace("progressHandler name=" + file.name + " bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function selectHandler(event:Event):void { var file:FileReference = FileReference(event.target); trace("selectHandler: name=" + file.name + " URL=" + uploadURL.url); file.upload(uploadURL); } } }
flash.net.FileReferenceListflash.filesystem.FileuploadCompleteData Distribué après réception des données par le serveur suite à un chargement réussi.flash.events.DataEvent.UPLOAD_COMPLETE_DATAflash.events.DataEvent Distribué après réception des données par le serveur suite à un chargement réussi. Cet événement n’est pas distribué si le serveur ne renvoie pas les données. httpResponseStatus Distribué si un appel de la méthode upload() ou uploadUnencoded() tente d’accéder aux données via HTTP, et si Adobe AIR est capable de détecter et de renvoyer le code d’état de la requête.flash.events.HTTPStatusEvent.HTTP_RESPONSE_STATUSflash.events.HTTPStatusEvent Distribué si un appel de la méthode upload() ou uploadUnencoded() tente d’accéder aux données via HTTP, et si Adobe AIR est capable de détecter et de renvoyer le code d’état de la requête. upload()uploadUnencoded()httpStatus Distribué lorsqu’un chargement échoue et qu’il existe un code d’état HTTP décrivant l’échec. flash.events.HTTPStatusEvent.HTTP_STATUSflash.events.HTTPStatusEvent Distribué lorsqu’un chargement échoue et qu’il existe un code d’état HTTP décrivant l’échec. L’événement httpStatus est distribué et suivi de l’événement ioError.

L’événement httpStatus est uniquement distribué en cas d’échec d’un chargement. Dans le cas de contenu s’exécutant dans Flash Player, cet événement ne s’applique pas aux échecs de téléchargement. Si un téléchargement échoue en raison d’une erreur HTTP, l’erreur est signalée en tant qu’erreur d’E/S.

FileReference.upload()
select Distribué lorsque l’utilisateur sélectionne un fichier à charger ou télécharger dans la boîte de dialogue de recherche de fichiers.flash.events.Event.SELECTflash.events.Event Distribué lorsque l’utilisateur sélectionne un fichier à charger ou télécharger dans la boîte de dialogue de recherche de fichiers (cette boîte de dialogue s’ouvre quand vous appelez la méthode FileReference.browse(), FileReferenceList.browse() ou FileReference.download()). Lorsque l’utilisateur sélectionne un fichier et confirme l’opération (par exemple, en cliquant sur OK), les propriétés de l’objet FileReference sont renseignées.

Dans le cas de contenu s’exécutant dans Flash Player ou hors du sandbox de sécurité de l’application dans le moteur d’exécution Adobe AIR, l’événement select fonctionne légèrement différemment selon la méthode qui l’appelle. Lorsque l’événement select est distribué après un appel à browse(), Flash Player ou l’application AIR peut lire toutes les propriétés de l’objet FileReference, car le fichier choisi se trouve dans le système de fichiers local. Lorsque l’événement select se produit après un appel à download(), Flash Player ou l’application AIR peut uniquement lire la propriété name, car le fichier n’a pas encore été téléchargé dans le système de fichiers local au moment où l’événement select se produit. Une fois le fichier téléchargé et l’événement complete distribué, Flash Player ou l’application AIR peut lire toutes les autres propriétés de l’objet FileReference.

L’exemple suivant illustre l’utilisation de l’objet d’événement select. Pour exécuter cet exemple, modifiez la propriété downloadURL.url de sorte qu’elle pointe vers un domaine et un fichier réels, au lieu de l’adresse fictive http://www.[votreDomaine].com/SomeFile.pdf. Il se peut que vous deviez également compiler le fichier SWF en réglant Sécurité de lecture locale sur Accès au réseau uniquement ou mettre à jour les paramètres de sécurité de Flash Player de façon à permettre un accès réseau à ce fichier. Pour que cet exemple s’exécute à partir de votre bureau, un fichier crossdomain.xml doit également résider sur votre serveur. Si la fonction ioErrorHandler() est déclenchée, vous devrez probablement mettre à jour la définition de la propriété uploadURL avec une URL valide configurée pour recevoir les chargements. package { import flash.display.Sprite; import flash.events.*; import flash.net.FileReference; import flash.net.URLRequest; public class FileReference_event_select extends Sprite { private var uploadURL:URLRequest; private var file:FileReference; public function FileReference_event_select() { uploadURL = new URLRequest(); uploadURL.url = "http://www.[yourDomain].com/yourUploadHandlerScript.cfm"; file = new FileReference(); file.addEventListener(Event.SELECT, selectHandler); file.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); file.addEventListener(ProgressEvent.PROGRESS, progressHandler); file.addEventListener(Event.COMPLETE, completeHandler); file.browse(); } private function selectHandler(event:Event):void { var file:FileReference = FileReference(event.target); trace("selectHandler: name=" + file.name + " URL=" + uploadURL.url); file.upload(uploadURL); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } private function progressHandler(event:ProgressEvent):void { var file:FileReference = FileReference(event.target); trace("progressHandler: name=" + file.name + " bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal); } private function completeHandler(event:Event):void { trace("completeHandler: " + event); } } }
securityError Distribué lorsqu’un appel de la méthode FileReference.upload() ou FileReference.download() tente de charger un fichier sur un serveur ou d’extraire un fichier d’un serveur qui se trouve hors du sandbox de sécurité de l’appelant.flash.events.SecurityErrorEvent.SECURITY_ERRORflash.events.SecurityErrorEvent Distribué lorsqu’un appel de la méthode FileReference.upload() ou FileReference.download() tente de charger un fichier sur un serveur ou d’extraire un fichier d’un serveur qui se trouve hors du sandbox de sécurité de l’appelant. En règle générale, la valeur de la propriété text qui décrit l’erreur spécifique qui s’est produite correspond à securitySandboxError. Le fichier SWF effectuant l’appel a peut-être tenté d’accéder à un fichier SWF hors de son domaine et sans l’autorisation nécessaire. Vous pouvez tenter de remédier à cette erreur à l’aide d’un fichier de régulation d’URL.

Dans Adobe AIR, le contenu du sandbox de sécurité de l’application n’est pas soumis à ces restrictions de sécurité.

Dans Adobe AIR, le contenu du sandbox de sécurité de l’application n’est pas soumis à ces restrictions de sécurité.

FileReference.download()FileReference.upload()
progress Distribué régulièrement pendant l’opération de chargement ou de téléchargement.flash.events.ProgressEvent.PROGRESSflash.events.ProgressEvent Distribué régulièrement pendant l’opération de chargement ou de téléchargement. L’événement progress est distribué pendant que Flash Player transmet des octets à un serveur, et il est déclenché régulièrement pendant la transmission, même si, au final, elle n’aboutit pas. Pour déterminer si la transmission du fichier est entièrement terminée, et à quel moment, écoutez l’événement complete.

Il arrive que des événements progress ne soient pas reçus. Lorsque le fichier transmis est très petit ou lorsque le chargement ou le téléchargement se déroule très rapidement, par exemple, il se peut qu’aucun événement progress ne soit distribué.

La progression du chargement d’un fichier ne peut pas être déterminée sur les plateformes Macintosh avec version antérieure à OS X 10.3. L’événement progress est appelé au cours du chargement, mais la valeur de la propriété bytesLoaded de l’événement progress correspond à -1, ce qui indique que la progression ne peut pas être identifiée.

L’exemple suivant illustre l’utilisation de l’objet d’événement progress. Pour exécuter cet exemple, modifiez la propriété downloadURL.url pour qu’elle pointe sur une URL et un domaine existants, au lieu de l’adresse http://www fictive.[votreDomaine].com/SomeFile.pdf. Vous aurez peut-être besoin de compiler le fichier SWF avec l’option Protection de lecture locale définie sur Accéder au réseau seulement ou de mettre à jour vos paramètres de sécurité Flash Player pour autoriser ce fichier à accéder au réseau. package { import flash.display.Sprite; import flash.events.*; import flash.net.FileReference; import flash.net.URLRequest; public class FileReference_event_progress extends Sprite { private var downloadURL:URLRequest; private var fileName:String = "SomeFile.pdf"; private var file:FileReference; public function FileReference_event_progress() { downloadURL = new URLRequest(); downloadURL.url = "http://www.[yourDomain].com/SomeFile.pdf"; file = new FileReference(); file.addEventListener(ProgressEvent.PROGRESS, progressHandler); file.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); file.addEventListener(Event.COMPLETE, completeHandler); file.download(downloadURL, fileName); } private function progressHandler(event:ProgressEvent):void { var file:FileReference = FileReference(event.target); trace("progressHandler: name=" + file.name + " bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } private function completeHandler(event:Event):void { trace("completeHandler: " + event); } } }
FileReference.completeflash.events.ProgressEventFileReference.download()FileReference.upload()
open Distribué au début d’une opération de chargement ou de téléchargement.flash.events.Event.OPENflash.events.Event Distribué au début d’une opération de chargement ou de téléchargement. L’exemple suivant illustre l’emploi de l’objet événement download. Pour exécuter cet exemple, modifiez la propriété downloadURL.url pour qu’elle pointe sur une URL et un domaine existants, au lieu de l’adresse http://www fictive.[votreDomaine].com/SomeFile.pdf. Vous aurez peut-être besoin de compiler le fichier SWF avec l’option Protection de lecture locale définie sur Accéder au réseau seulement ou de mettre à jour vos paramètres de sécurité Flash Player pour autoriser ce fichier à accéder au réseau. package { import flash.display.Sprite; import flash.events.*; import flash.net.FileReference; import flash.net.URLRequest; import flash.net.FileFilter; public class FileReference_download extends Sprite { private var downloadURL:URLRequest; private var fileName:String = "SomeFile.pdf"; private var file:FileReference; public function FileReference_download() { downloadURL = new URLRequest(); downloadURL.url = "http://www.[yourDomain].com/SomeFile.pdf"; file = new FileReference(); configureListeners(file); file.download(downloadURL, fileName); } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.CANCEL, cancelHandler); dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); dispatcher.addEventListener(Event.SELECT, selectHandler); } private function cancelHandler(event:Event):void { trace("cancelHandler: " + event); } private function completeHandler(event:Event):void { trace("completeHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } private function openHandler(event:Event):void { trace("openHandler: " + event); } private function progressHandler(event:ProgressEvent):void { var file:FileReference = FileReference(event.target); trace("progressHandler name=" + file.name + " bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function selectHandler(event:Event):void { var file:FileReference = FileReference(event.target); trace("selectHandler: name=" + file.name + " URL=" + downloadURL.url); } } } FileReference.download()FileReference.upload()ioError Distribué lors de l’échec de l’opération de chargement ou de téléchargement. flash.events.IOErrorEvent.IO_ERRORflash.events.IOErrorEvent Distribué lors de l’échec de l’opération de chargement ou de téléchargement. Un transfert de fichiers peut échouer pour l’une des raisons suivantes :
  • Une erreur d’entrée/sortie se produit lors de la lecture, l’écriture ou la transmission du fichier.
  • Le fichier SWF tente de charger un fichier sur un serveur nécessitant une authentification (un nom d’utilisateur et un mot de passe, par exemple). Au cours du chargement, Flash Player ou Adobe AIR ne permet pas aux utilisateurs d’entrer des mots de passe. Si un fichier SWF tente de charger un fichier vers un serveur nécessitant une authentification, le chargement échoue.
  • Le fichier SWF tente de télécharger un fichier à partir d’un serveur nécessitant une authentification, dans le lecteur autonome ou externe. Au cours du téléchargement, les lecteurs autonomes et externes ne permettent pas aux utilisateurs d’entrer des mots de passe. Si un fichier SWF présent dans ces lecteurs tente de télécharger un fichier à partir d’un serveur nécessitant une authentification, le téléchargement échoue. Le téléchargement de fichiers réussit uniquement via les lecteurs avec contrôle ActiveX et plug-in de navigation, ainsi que dans le moteur d’exécution Adobe AIR.
  • La valeur transmise au paramètre url dans la méthode upload() contient un protocole non valide. Les protocoles valides sont HTTP et HTTPS.

Important : seules les applications s’exécutant dans un navigateur (via le module de navigation ou le contrôle ActiveX), ainsi que le contenu s’exécutant dans Adobe AIR, peuvent proposer une boîte de dialogue pour inviter l’utilisateur à s’authentifier avec un nom d’utilisateur et un mot de passe, et ceci uniquement pour les téléchargements. Le transfert de fichiers échoue si le chargement est effectué à l’aide du plug-in ou du contrôle ActiveX de Flash Player, ou si un chargement/téléchargement est effectué par le biais du lecteur autonome ou externe.

FileReference.download()FileReference.upload()
complete Distribué à la fin d’un téléchargement ou lorsqu’un chargement génère le code d’état HTTP 200.flash.events.Event.COMPLETEflash.events.Event Distribué à la fin d’un téléchargement ou lorsqu’un chargement génère le code d’état HTTP 200. Dans le cas d’un téléchargement, cet événement est distribué lorsque Flash Player ou Adobe AIR achève la totalité du téléchargement du fichier dans le disque. Dans le cas d’un chargement, cet événement est distribué lorsque Flash Player ou Adobe AIR reçoit le code d’état HTTP 200 du serveur recevant la transmission. L’exemple suivant illustre l’utilisation de l’objet d’événement complete. Pour exécuter cet exemple, modifiez la propriété downloadURL.url pour qu’elle pointe sur une URL et un domaine existants, au lieu de l’adresse http://www fictive.[votreDomaine].com/SomeFile.pdf. Vous aurez peut-être besoin de compiler le fichier SWF avec l’option Protection de lecture locale définie sur Accéder au réseau seulement ou de mettre à jour vos paramètres de sécurité Flash Player pour autoriser ce fichier à accéder au réseau. package { import flash.display.Sprite; import flash.events.*; import flash.net.FileReference; import flash.net.URLRequest; public class FileReference_event_complete extends Sprite { private var downloadURL:URLRequest; private var fileName:String = "SomeFile.pdf"; private var file:FileReference; public function FileReference_event_complete() { downloadURL = new URLRequest(); downloadURL.url = "http://www.[yourDomain].com/SomeFile.pdf"; file = new FileReference(); configureListeners(file); file.download(downloadURL, fileName); } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.CANCEL, cancelHandler); dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); dispatcher.addEventListener(Event.SELECT, selectHandler); } private function cancelHandler(event:Event):void { trace("cancelHandler: " + event); } private function completeHandler(event:Event):void { trace("completeHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } private function openHandler(event:Event):void { trace("openHandler: " + event); } private function progressHandler(event:ProgressEvent):void { var file:FileReference = FileReference(event.target); trace("progressHandler name=" + file.name + " bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function selectHandler(event:Event):void { var file:FileReference = FileReference(event.target); trace("selectHandler: name=" + file.name + " URL=" + downloadURL.url); } } } FileReference.download()FileReference.upload()cancel Distribué lorsqu’un chargement ou un téléchargement de fichiers est annulé par l’utilisateur via la boîte de dialogue de recherche de fichiers.flash.events.Event.CANCELflash.events.Event Distribué lorsqu’un chargement ou un téléchargement de fichiers est annulé par l’utilisateur via la boîte de dialogue de recherche de fichiers. Flash Player ne distribue pas cet événement si l’utilisateur annule un chargement ou un téléchargement selon un autre procédé (en fermant le navigateur ou en arrêtant l’application active). L’exemple suivant illustre l’utilisation de l’objet d’événement download. Pour exécuter cet exemple, modifiez la propriété downloadURL.url pour qu’elle pointe sur une URL et un domaine existants, au lieu de l’adresse http://www fictive.[votreDomaine].com/SomeFile.pdf. Vous aurez peut-être besoin de compiler le fichier SWF avec l’option Protection de lecture locale définie sur Accéder au réseau seulement ou de mettre à jour vos paramètres de sécurité Flash Player pour autoriser ce fichier à accéder au réseau. package { import flash.display.Sprite; import flash.events.*; import flash.net.FileReference; import flash.net.URLRequest; public class FileReference_event_cancel extends Sprite { private var downloadURL:URLRequest; private var fileName:String = "SomeFile.pdf"; private var file:FileReference; public function FileReference_event_cancel() { downloadURL = new URLRequest(); downloadURL.url = "http://www.[yourDomain].com/SomeFile.pdf"; file = new FileReference(); file.addEventListener(Event.CANCEL, cancelHandler); file.download(downloadURL, fileName); } private function cancelHandler(event:Event):void { trace("cancelHandler: " + event); } } } FileReference Crée un nouvel objet FileReference. Crée un nouvel objet FileReference. Quand il est renseigné, un objet FileReference représente un fichier du disque local de l’utilisateur. FileReference.browse()browse Affiche une boîte de dialogue de recherche de fichiers dans laquelle l’utilisateur peut sélectionner un fichier à charger.Renvoyé dans les cas suivants : 1) Une autre session browse FileReference ou FileReferenceList est en cours. Il est impossible d’exécuter plusieurs sessions de recherche de fichiers simultanément. 2) Un paramètre du fichier mms.cfg de l’utilisateur bloque cette opération. IllegalOperationErrorflash.errors:IllegalOperationErrorUne exception est renvoyée si le tableau typeFilter contient des objets FileFilter incorrectement formatés. Pour plus d’informations sur le format correct des objets FileFilter, voir la classe FileFilter. ArgumentErrorArgumentErrorSi la méthode n’est pas appelée en réponse à l’action d’un utilisateur, notamment à un événement de type souris ou pression de touche. ErrorErrorRenvoie true si les paramètres sont valides et que la boîte de dialogue de recherche de fichiers est ouverte. BooleantypeFilterArraynullTableau d’occurrences de FileFilter utilisé pour filtrer les fichiers qui s’affichent dans la boîte de dialogue. Si vous omettez ce paramètre, tous les fichiers s’affichent. Pour plus d’informations, voir la classe FileFilter. Affiche une boîte de dialogue de recherche de fichiers dans laquelle l’utilisateur peut sélectionner un fichier à charger. La boîte de dialogue est spécifique au système d’exploitation de l’utilisateur. L’utilisateur peut sélectionner un fichier dans l’ordinateur local ou dans d’autres systèmes, via un chemin UNC sur Windows, par exemple.

Remarque : la classe File, disponible dans Adobe AIR, comprend des méthodes permettant d’accéder à des boîtes de dialogue de sélection de systèmes de fichiers plus spécifiques. Ces méthodes sont les suivantes : File.browseForDirectory(), File.browseForOpen(), File.browseForOpenMultiple()et File.browseForSave().

Lorsque vous appelez cette méthode et que l’utilisateur réussit à sélectionner un fichier, les propriétés de l’objet FileReference sont renseignées par les propriétés de ce fichier. Par la suite, à chaque appel de la méthode FileReference.browse(), les propriétés de l’objet FileReference sont réinitialisées en fonction du fichier choisi par l’utilisateur dans la boîte de dialogue. Une seule session browse() ou download() peut être effectuée à la fois (car une seule boîte de dialogue peut être appelée à la fois).

Le paramètre typeFilter vous permet de déterminer les fichiers répertoriés dans la boîte de dialogue.

Dans Flash Player 10 et Flash Player 9 Mise à jour 5, l’appel de cette méthode aboutit uniquement en réponse à un événement utilisateur (par exemple, un événement de type clic de souris ou pression de touche). Dans les autres cas, Flash Player renvoie une exception Error à l’appel de cette méthode.

Notez que lors de la publication dans Flash Player 10, les nouvelles fonctionnalités ajoutées au lecteur ne vous permettent d’exécuter qu’une seule opération à la fois : FileReference.browse(), FileReference.upload(), FileReference.download(), FileReference.load() ou FileReference.save(). Dans le cas contraire, Flash Player renvoie une erreur d’exécution (code 2174). Utilisez FileReference.cancel() pour arrêter une opération en cours. Cette restriction s’applique uniquement à Flash Player 10. Cette restriction sur l’exécution simultanée de plusieurs opérations ne s’applique pas aux versions précédentes de Flash Player.

Dans Adobe AIR, la boîte de dialogue de recherche de fichiers n’est pas toujours affichée devant les fenêtres appartenant à une autre fenêtre (fenêtres dont la propriété owner n’est pas nulle). Pour éviter des problèmes de classement de fenêtres, masquez les fenêtres possédées avant d’appeler cette méthode.

select, événementcancel, événementFileReference.download()FileReferenceList.browse()File.browseForDirectory()File.browseForOpen()File.browseForOpenMultiple()File.browseForSave()selectflash.events:EventDistribué lorsque l’utilisateur sélectionne un élément dans la boîte de dialogue de recherche de fichiers. Distribué lorsque l’utilisateur sélectionne un élément dans la boîte de dialogue de recherche de fichiers.cancelflash.events:EventDistribué lorsque l’utilisateur annule le chargement du fichier dans la fenêtre de recherche de fichiers. Distribué lorsque l’utilisateur annule le chargement du fichier dans la fenêtre de recherche de fichiers.
cancel Annule une opération de chargement ou de téléchargement en cours sur cet objet FileReference.Annule le chargement ou le téléchargement en cours. Annule une opération de chargement ou de téléchargement en cours sur cet objet FileReference. L’appel de cette méthode n’entraîne pas la distribution de l’événement cancel. Celui-ci n’est distribué que si l’utilisateur annule l’opération en fermant la boîte de dialogue de sélection des fichiers à charger ou télécharger. download Affiche une boîte de dialogue permettant à l’utilisateur de télécharger un fichier à partir d’un serveur distant.Renvoyé dans les cas suivants : 1) Une autre session browse est en cours. Il est impossible d’exécuter plusieurs sessions de recherche de fichiers simultanément. 2) La valeur transmise à request ne contient ni un chemin ni un protocole valide. 3) Le nom de fichier à télécharger contient des caractères interdits. 4) Un paramètre du fichier mms.cfg de l’utilisateur bloque cette opération. IllegalOperationErrorflash.errors:IllegalOperationErrorTout contenu non approuvé au niveau local ne peut pas communiquer avec Internet. Pour contourner cette restriction, reclassifiez le fichier SWF en tant que fichier local avec accès au réseau ou en tant que fichier approuvé. Cette exception est renvoyée, accompagnée d’un message indiquant le nom de fichier et l’URL qui ne sont pas accessibles en raison des restrictions relatives à la sécurité des fichiers locaux. SecurityErrorSecurityErrorVous 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. SecurityErrorSecurityErrorSi url.data est de type ByteArray, une exception est renvoyée. Lorsqu’il est utilisé avec les méthodes FileReference.upload() et FileReference.download(), url.data peut uniquement être de type URLVariables ou String. ArgumentErrorArgumentErrorCette erreur peut se produire pour les raisons suivantes : 1) Flash Player ne peut pas convertir le paramètre URLRequest.data du format UTF8 au format MBCS. Cette erreur se produit si l’objet URLRequest transmis à la méthode FileReference.download() est configuré pour exécuter une opération GET et si System.useCodePage est réglé sur true. 2) Flash Player ne peut pas allouer de mémoire aux données POST. Cette erreur se produit si l’objet URLRequest transmis à la méthode FileReference.download() est configuré pour exécuter une opération POST. MemoryErrorflash.errors:MemoryErrorSi la méthode n’est pas appelée en réponse à l’action d’un utilisateur, notamment à un événement de type souris ou pression de touche. ErrorErrorrequestflash.net:URLRequestL’objet URLRequest. La propriété url de l’objet URLRequest doit contenir l’URL du fichier à télécharger sur l’ordinateur local. Si la valeur de ce paramètre est null, une exception est renvoyée. La propriété requestHeaders de l’objet URLRequest est ignorée ; les en-têtes de requête HTTP personnalisés ne sont pas pris en charge dans les chargements et les téléchargements. Pour envoyer des paramètres POST ou GET au serveur, réglez la valeur de URLRequest.data sur vos paramètres et URLRequest.method sur URLRequestMethod.POST ou URLRequestMethod.GET.

Dans certains navigateurs, la longueur des chaînes d’URL est limitée. Une longueur supérieure à 256 caractères peut échouer avec certains navigateurs ou serveurs.

defaultFileNameStringnullNom de fichier par défaut affiché dans la boîte de dialogue pour le fichier à télécharger. Les caractères suivants sont interdits dans cette chaîne : / \ : ~~ ? " < > | %

Si vous omettez ce paramètre, le nom de fichier de l’URL distante est analysé et utilisé par défaut.

Affiche une boîte de dialogue permettant à l’utilisateur de télécharger un fichier à partir d’un serveur distant. Flash Player n’impose pas de restrictions au niveau de la taille des fichiers chargés ou téléchargés ; en revanche, le lecteur prend en charge des chargements ou des téléchargements de 100 Mo au maximum.

La méthode download() ouvre d’abord une boîte de dialogue du système d’exploitation demandant à l’utilisateur d’entrer un nom de fichier et de sélectionner l’emplacement où enregistrer le fichier dans l’ordinateur local. Quand l’utilisateur choisit un emplacement et confirme le téléchargement (en cliquant sur Enregistrer, par exemple), celui-ci commence sur le serveur distant. Les écouteurs reçoivent des événements indiquant la progression du téléchargement, ainsi que sa réussite ou son échec. Pour déterminer l’état de la boîte de dialogue et de l’opération de téléchargement après avoir appelé la méthode download(), votre code doit écouter les événements tels que cancel, open, progress et complete.

Les fonctions FileReference.upload() et FileReference.download() ne sont pas bloquantes. Elles sont renvoyées après leur appel, avant la fin de la transmission de fichiers. En outre, si l’objet FileReference sort de son domaine, tout chargement ou téléchargement qui n’est pas encore terminé sur cet objet est annulé à ce moment-là. Veillez à ce que l’objet FileReference demeure dans son domaine pendant toute la durée prévue du chargement ou du téléchargement.

Une fois le fichier téléchargé, les propriétés de l’objet FileReference sont renseignées par les propriétés du fichier local. L’événement complete est distribué si le téléchargement aboutit.

Une seule session browse() ou download() peut être effectuée à la fois (car une seule boîte de dialogue peut être appelée à la fois).

Cette méthode prend en charge le téléchargement de tout type de fichier, via HTTP ou HTTPS.

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.

Remarque : si votre serveur requiert l’authentification des utilisateurs, seuls les fichiers SWF s’exécutant dans un navigateur (c’est-à-dire avec le plug-in de navigation ou un contrôle ActiveX), peuvent fournir une boîte de dialogue qui demande à l’utilisateur son identifiant et son mot de passe d’authentification, ceci uniquement pour les téléchargements. Le transfert de fichiers échoue si le chargement est effectué à l’aide du plug-in ou d’un contrôle ActiveX, ou si un chargement/téléchargement est effectué par le biais du lecteur autonome ou externe.

Lorsque vous employez cette méthode, tenez compte du modèle de sécurité de Flash Player :

  • Les opérations de chargement sont interdites si le fichier SWF appelant se trouve dans un sandbox local non approuvé.
  • Par défaut, l’accès entre les sandbox est refusé. Un site Web peut autoriser l’accès à une ressource en ajoutant un fichier de régulation d’URL.
  • 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.
  • Dans Flash Player 10 et Flash Player 9 Mise à jour 5, l’appel de cette méthode aboutit uniquement en réponse à un événement utilisateur (par exemple, un événement de type clic de souris ou pression de touche). Dans les autres cas, Flash Player renvoie une exception Error à l’appel de cette méthode.

Néanmoins, dans Adobe AIR, le contenu du sandbox de sécurité de l’application (contenu installé avec l’application AIR) n’est pas soumis à ces restrictions de sécurité.

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

Lorsque vous téléchargez un fichier à l’aide de cette méthode, il est alors marqué comme téléchargé sur les systèmes d’exploitation qui marquent les fichiers téléchargés :

  • Windows XP Service Pack 2 et versions ultérieures, et Windows Vista
  • Mac OS 10.5 et versions ultérieures

Certains systèmes d’exploitation, tels que Linux, ne marquent pas les fichiers téléchargés.

Notez que lors de la publication dans Flash Player 10, les nouvelles fonctionnalités ajoutées au lecteur ne vous permettent d’exécuter qu’une seule opération à la fois : FileReference.browse(), FileReference.upload(), FileReference.download(), FileReference.load() ou FileReference.save(). Dans le cas contraire, Flash Player renvoie une erreur d’exécution (code 2174). Utilisez FileReference.cancel() pour arrêter une opération en cours. Cette restriction s’applique uniquement à Flash Player 10. Cette restriction sur l’exécution simultanée de plusieurs opérations ne s’applique pas aux versions précédentes de Flash Player.

Dans Adobe AIR, la boîte de dialogue de téléchargement n’est pas toujours affichée devant les fenêtres appartenant à une autre fenêtre (fenêtres dont la propriété owner n’est pas nulle). Pour éviter des problèmes de classement de fenêtres, masquez les fenêtres possédées avant d’appeler cette méthode.

L’exemple suivant illustre l’emploi de l’objet événement download. Pour exécuter cet exemple, modifiez la propriété downloadURL.url pour qu’elle pointe sur une URL et un domaine existants, au lieu de l’adresse http://www fictive.[votreDomaine].com/SomeFile.pdf. Vous aurez peut-être besoin de compiler le fichier SWF avec l’option Protection de lecture locale définie sur Accéder au réseau seulement ou de mettre à jour vos paramètres de sécurité Flash Player pour autoriser ce fichier à accéder au réseau. package { import flash.display.Sprite; import flash.events.*; import flash.net.FileReference; import flash.net.URLRequest; import flash.net.FileFilter; public class FileReference_download extends Sprite { private var downloadURL:URLRequest; private var fileName:String = "SomeFile.pdf"; private var file:FileReference; public function FileReference_download() { downloadURL = new URLRequest(); downloadURL.url = "http://www.[yourDomain].com/SomeFile.pdf"; file = new FileReference(); configureListeners(file); file.download(downloadURL, fileName); } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.CANCEL, cancelHandler); dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); dispatcher.addEventListener(Event.SELECT, selectHandler); } private function cancelHandler(event:Event):void { trace("cancelHandler: " + event); } private function completeHandler(event:Event):void { trace("completeHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } private function openHandler(event:Event):void { trace("openHandler: " + event); } private function progressHandler(event:ProgressEvent):void { var file:FileReference = FileReference(event.target); trace("progressHandler name=" + file.name + " bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function selectHandler(event:Event):void { var file:FileReference = FileReference(event.target); trace("selectHandler: name=" + file.name + " URL=" + downloadURL.url); } } }
File.downloadedFileReference.browse()FileReferenceList.browse()FileReference.upload()FileReference.save()openflash.events:EventDistribué lors du démarrage d’une opération de téléchargement. Distribué lors du démarrage d’une opération de téléchargement.progressflash.events:ProgressEventDistribué régulièrement pendant le téléchargement du fichier. Distribué régulièrement pendant le téléchargement du fichier.completeflash.events:EventDistribué en cas de réussite de l’opération de téléchargement. Distribué en cas de réussite de l’opération de téléchargement.cancelflash.events:EventDistribué lorsque l’utilisateur ferme la boîte de dialogue. Distribué lorsque l’utilisateur ferme la boîte de dialogue.selectflash.events:EventDistribué lorsque l’utilisateur sélectionne un fichier à télécharger dans la boîte de dialogue. Distribué lorsque l’utilisateur sélectionne un fichier à télécharger dans la boîte de dialogue.securityErrorflash.events:SecurityErrorEventDistribué lorsqu’un téléchargement échoue en raison d’une erreur de sécurité. Distribué lorsqu’un téléchargement échoue en raison d’une erreur de sécurité.ioErrorflash.events:IOErrorEventDistribué pour l’une des raisons suivantes :
  • Une erreur d’entrée/de sortie se produit pendant la lecture ou la transmission du fichier.
  • Le contenu SWF s’exécutant dans les versions autonome et externe de Flash Player tente de télécharger un fichier depuis un serveur nécessitant une authentification. Au cours du téléchargement, les lecteurs autonomes et externes ne permettent pas aux utilisateurs d’entrer des mots de passe. Si un fichier SWF présent dans ces lecteurs tente de télécharger un fichier à partir d’un serveur nécessitant une authentification, le téléchargement échoue. Le téléchargement de fichiers réussit uniquement via les lecteurs avec contrôle ActiveX et plug-in de navigation.
Distribué pour l’une des raisons suivantes : Une erreur d’entrée/sortie se produit pendant la lecture ou la transmission du fichier. Le contenu SWF s’exécutant dans les versions autonome et externe de Flash Player tente de télécharger un fichier depuis un serveur nécessitant une authentification.
load Démarre le chargement d’un fichier local sélectionné par un utilisateur.Renvoyé dans les cas suivants : 1) Une autre session browse FileReference ou FileReferenceList est en cours. Il est impossible d’exécuter plusieurs sessions de recherche de fichiers simultanément. 2) Un paramètre du fichier mms.cfg de l’utilisateur bloque cette opération. IllegalOperationErrorflash.errors:IllegalOperationErrorCette erreur peut se produire si l’application ne peut pas allouer de mémoire pour le fichier. Le fichier peut être trop volumineux ou la quantité de mémoire disponible insuffisante. MemoryErrorflash.errors:MemoryErrorDémarre le chargement d’un fichier local. Démarre le chargement d’un fichier local sélectionné par un utilisateur. Flash Player n’impose pas de restrictions au niveau de la taille des fichiers chargés, téléchargés ou enregistrés, mais officiellement prend en charge des tailles de 100 Mo au maximum. Pour le contenu s’exécutant dans Flash Player, vous devez appeler la méthode FileReference.browse() ou FileReferenceList.browse() avant d’appeler la méthode load(). Néanmoins, le contenu exécuté dans AIR dans le sandbox de l’application peut appeler la méthode load() d’un objet File sans appeler au préalable la méthode browse() (la classe File d’AIR étend la classe FileReference).

Les écouteurs reçoivent des événements indiquant la progression du chargement, ainsi que sa réussite ou son échec. Bien que vous puissiez utiliser l’objet FileReferenceList permettant aux utilisateurs un choix multiple de fichiers à charger, vous devez charger les fichiers un par un. Pour charger les fichiers un par un, parcourez en boucle le tableau FileReferenceList.fileList des objets FileReference.

Adobe AIR comprend également la classe FileStream, qui propose davantage d’options de lecture de fichiers.

Les fonctions FileReference.upload(), FileReference.download(), FileReference.load() et FileReference.save() ne sont pas bloquantes. Elles sont renvoyées après leur appel, avant la fin de la transmission de fichiers. En outre, si l’objet FileReference sort de son domaine, toute transaction qui n’est pas encore terminée sur cet objet est annulée à ce moment-là. Veillez à ce que l’objet FileReference demeure dans son domaine pendant toute la durée prévue du chargement, téléchargement ou enregistrement.

Si le téléchargement du fichier aboutit, son contenu est stocké en tant que tableau d’octets dans la propriété data de l’objet FileReference.

Il faut tenir compte des considérations de sécurité suivantes :

  • Les opérations de chargement sont interdites si le fichier SWF appelant se trouve dans un sandbox local non approuvé.
  • Par défaut, l’accès entre les sandbox est refusé. Un site Web peut autoriser l’accès à une ressource en ajoutant un fichier de régulation interdomaines.
  • Vous pouvez empêcher un fichier 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.

Toutefois, ces considérations ne s’appliquent pas au contenu AIR dans le sandbox de l’application.

Notez que lors de la publication dans Flash Player 10 ou AIR 1.5, une seule des opérations suivantes peut être exécutée à la fois : FileReference.browse(), FileReference.upload(), FileReference.download(), FileReference.load(), FileReference.save(). Dans le cas contraire, l’application renvoie une erreur d’exécution (code 2174). Utilisez FileReference.cancel() pour arrêter une opération en cours. Cette restriction s’applique uniquement à Flash Player 10 et AIR 1.5. Les versions antérieures de Flash Player ou AIR ne sont pas concernées par cette restriction sur l’exécution simultanée de plusieurs opérations.

Dans Adobe AIR, la boîte de dialogue de recherche de fichiers n’est pas toujours affichée devant les fenêtres appartenant à une autre fenêtre (fenêtres dont la propriété owner n’est pas nulle). Pour éviter des problèmes de classement de fenêtres, masquez les fenêtres possédées avant d’appeler cette méthode.

L’exemple suivant charge une image à partir de votre système de fichiers local sur l’objet d’affichage racine (dans ce cas, la scène). Exemple fourni par André Venancio (disponible en anglais uniquement). var buttonShape:Shape = new Shape(); buttonShape.graphics.beginFill(0x336699); buttonShape.graphics.drawCircle(50, 50, 25); var button = new SimpleButton(buttonShape, buttonShape, buttonShape, buttonShape); addChild(button); var fileRef:FileReference= new FileReference(); button.addEventListener(MouseEvent.CLICK, onButtonClick); function onButtonClick(e:MouseEvent):void { fileRef.browse([new FileFilter("Images", "*.jpg;*.gif;*.png")]); fileRef.addEventListener(Event.SELECT, onFileSelected); } function onFileSelected(e:Event):void { fileRef.addEventListener(Event.COMPLETE, onFileLoaded); fileRef.load(); } function onFileLoaded(e:Event):void { var loader:Loader = new Loader(); loader.loadBytes(e.target.data); addChild(loader); }
FileReference.browse()FileReferenceList.browse()FileReference.dataFileReferenceList.fileListFileReference.save()FileStreamopenflash.events:EventDistribué lors du démarrage d’une opération de chargement. Distribué lors du démarrage d’une opération de chargement.progressflash.events:ProgressEventDistribué régulièrement pendant le chargement du fichier. Distribué régulièrement pendant le chargement du fichier.completeflash.events:EventDistribué lorsque l’opération de chargement de fichier aboutit. Distribué lorsque l’opération de chargement de fichier aboutit.ioErrorflash.events:IOErrorEventInvoqué si le chargement échoue du fait d’une erreur d’entrée/sortie lors de la lecture ou de l’écriture du fichier par l’application. Invoqué si le chargement échoue du fait d’une erreur d’entrée/sortie lors de la lecture ou de l’écriture du fichier par l’application.
save Ouvre une boîte de dialogue qui permet à l’utilisateur d’enregistrer un fichier dans le système de fichiers local.Renvoyé dans les cas suivants : 1) Une autre session browse est en cours. Il est impossible d’exécuter plusieurs sessions de recherche de fichiers simultanément. 2) Le nom de fichier à télécharger contient des caractères interdits. 3) Un paramètre du fichier mms.cfg de l’utilisateur bloque cette opération. IllegalOperationErrorflash.errors:IllegalOperationErrorSi data n’est pas de type ByteArray et ne dispose pas d’une méthode toString(), une exception est renvoyée. Si data n’est pas de type XML et ne dispose pas d’une méthode toXMLString(), une exception est renvoyée. ArgumentErrorArgumentErrorSi la méthode n’est pas appelée en réponse à l’action d’un utilisateur, notamment à un événement de type souris ou pression de touche. ErrorErrorCette erreur peut se produire si Flash Player ne peut pas allouer de la mémoire pour le fichier. Le fichier peut être trop volumineux ou la quantité de mémoire disponible insuffisante. MemoryErrorflash.errors:MemoryErrordataDonnées à enregistrer. Les données peuvent être de divers formats et sont traitées de façon appropriée :
  • Si la valeur est null, l’application renvoie une exception ArgumentError.
  • Si cette valeur est une chaîne, les données sont enregistrées sous forme de fichier texte UTF-8.
  • Si cette valeur est XML, les données sont écrites dans un fichier texte au format XML et le formatage est préservé.
  • Si cette valeur est un objet ByteArray, les données sont écrites textuellement dans un fichier de données.
  • Si la valeur ne correspond à aucune des descriptions ci-dessus, la méthode save() appelle la méthode toString() de l’objet pour convertir les données en chaîne, puis enregistre les données sous forme de fichier texte. En cas d’échec, l’application renvoie une exception AurgmentError.
defaultFileNameStringnullNom de fichier par défaut affiché dans la boîte de dialogue pour le fichier à enregistrer. Les caractères suivants sont interdits dans cette chaîne : / \ : ~~ ? " < > | %

Si un objet File appelle cette méthode, le nom de fichier correspond à celui du fichier auquel l’objet File fait référence. (la classe File d’AIR étend la classe FileReference).

Ouvre une boîte de dialogue qui permet à l’utilisateur d’enregistrer un fichier dans le système de fichiers local. Flash Player n’impose pas de restrictions au niveau de la taille des fichiers chargés, téléchargés ou enregistrés, mais officiellement le lecteur prend en charge des tailles de 100 Mo au maximum.

La méthode save() ouvre d’abord une boîte de dialogue du système d’exploitation demandant à l’utilisateur d’entrer un nom de fichier et de sélectionner l’emplacement où l’enregistrer dans l’ordinateur local. Lorsque l’utilisateur sélectionne un emplacement et confirme l’enregistrement (par exemple en cliquant sur Enregistrer), le processus d’enregistrement commence. Les écouteurs reçoivent des événements indiquant la progression de l’enregistrement, ainsi que sa réussite ou son échec. Pour déterminer l’état de la boîte de dialogue et de l’opération d’enregistrement après avoir appelé la méthode save(), votre code doit écouter les événements tels que cancel, open, progress et complete.

Adobe AIR comprend également la classe FileStream, qui propose davantage d’options d’enregistrement de fichiers au niveau local.

Les fonctions FileReference.upload(), FileReference.download(), FileReference.load() et FileReference.save() ne sont pas bloquantes. Elles sont renvoyées après leur appel, avant la fin de la transmission de fichiers. En outre, si l’objet FileReference sort de son domaine, toute transaction qui n’est pas encore terminée sur cet objet est annulée à ce moment-là. Veillez à ce que l’objet FileReference demeure dans son domaine pendant toute la durée prévue du chargement, téléchargement ou enregistrement.

Une fois le fichier enregistré, les propriétés de l’objet FileReference sont renseignées avec les propriétés du fichier local. L’événement complete est distribué si l’enregistrement aboutit.

Une seule session browse() ou save() peut être effectuée à la fois (car une seule boîte de dialogue peut être appelée à la fois).

Dans Flash Player, l’appel de cette méthode aboutit uniquement en réponse à un événement utilisateur (par exemple, un événement de type clic de souris ou pression de touche). Dans les autres cas, Flash Player renvoie une exception Error à l’appel de cette méthode. Le contenu AIR s’exécutant dans le sandbox de l’application n’est pas soumis à cette restriction.

Dans Adobe AIR, la boîte de dialogue d’enregistrement n’est pas toujours affichée devant les fenêtres appartenant à une autre fenêtre (fenêtres dont la propriété owner n’est pas nulle). Pour éviter des problèmes de classement de fenêtres, masquez les fenêtres possédées avant d’appeler cette méthode.

L’exemple suivant enregistre le contenu saisi dans un champ de texte dans un fichier. L’exemple crée un champ de texte modifiable (MyTextField) et un autre champ de texte non modifiable (MyButtonField) pour servir de « bouton » afin de répondre à un clic de souris. L’utilisateur peut modifier le premier champ de texte et cliquer sur le bouton pour enregistrer le contenu du champ de texte dans un fichier local. Le gestionnaire d’événement de type clip de souris clickhandler utilise la méthode FileReference.save(), (pour un objet FileReference appelé MyFileReference) pour ouvrir une boîte de dialogue sur le système d’exploitation de l’utilisateur afin que ce dernier puisse enregistrer le contenu dans un fichier local avec le nom attribué. var MyTextField:TextField = new TextField(); var MyButtonField:TextField = new TextField(); var MyFile:FileReference = new FileReference(); MyTextField.border = true; MyTextField.type = TextFieldType.INPUT; MyButtonField.background = true; MyButtonField.backgroundColor = 0x339933; MyButtonField.x = 150; MyButtonField.height = 20; MyButtonField.text = "Click here to save"; addChild(MyTextField); addChild(MyButtonField); MyButtonField.addEventListener(MouseEvent.CLICK, clickhandler); function clickhandler(e:MouseEvent): void { MyFile.save(MyTextField.text); }
FileReferenceList.browse()FileReference.load()FileReference.dataFileReference.upload()FileReference.download()FileStreamopenflash.events:EventDistribué lors du démarrage d’une opération de téléchargement. Distribué lors du démarrage d’une opération de téléchargement.progressflash.events:ProgressEventDistribué régulièrement pendant le téléchargement du fichier. Distribué régulièrement pendant le téléchargement du fichier.completeflash.events:EventDistribué en cas de réussite de l’opération de téléchargement. Distribué en cas de réussite de l’opération de téléchargement.cancelflash.events:EventDistribué lorsque l’utilisateur ferme la boîte de dialogue. Distribué lorsque l’utilisateur ferme la boîte de dialogue.selectflash.events:EventDistribué lorsque l’utilisateur sélectionne un fichier à télécharger dans la boîte de dialogue. Distribué lorsque l’utilisateur sélectionne un fichier à télécharger dans la boîte de dialogue.ioErrorflash.events:IOErrorEventDistribué si une erreur d’entrée/sortie se produit pendant la lecture ou la transmission du fichier. Distribué si une erreur d’entrée/sortie se produit pendant la lecture ou la transmission du fichier.
uploadUnencoded Lance le chargement d’un fichier dans une URL sans aucun encodage.Les fichiers SWF non approuvés au niveau local ne peuvent pas communiquer avec Internet. Pour contourner cette restriction, reclassifiez le fichier SWF en tant que fichier local avec accès au réseau ou en tant que fichier approuvé. Cette exception est renvoyée, accompagnée d’un message indiquant le nom du fichier local et l’URL qui ne sont pas accessibles. SecurityErrorSecurityErrorRenvoyé dans les cas suivants : 1) Une autre session browse FileReference ou FileReferenceList est en cours. Il est impossible d’exécuter plusieurs sessions de recherche de fichiers simultanément. 2) Le paramètre URL n’est pas un chemin ou un protocole valide. Le chargement des fichiers doit se faire via HTTP. IllegalOperationErrorflash.errors:IllegalOperationErrorrequestflash.net:URLRequestL’objet URLRequest. La propriété url de cet objet doit contenir l’URL du script serveur configuré pour traiter le chargement via les appels HTTP POST. Dans certains navigateurs, la longueur des chaînes d’URL est limitée. Une longueur supérieure à 256 caractères peut échouer avec certains navigateurs ou serveurs. Si la valeur de ce paramètre est null, une exception est renvoyée.

L’URL peut être de type HTTP ou, pour les chargements sécurisés, de type HTTPS. Pour utiliser HTTPS, entrez une URL HTTPS dans le paramètre url. Si vous ne spécifiez pas de numéro de port dans le paramètre url, le port 80 pour HTTP et le port 443 pour HTTPS sont utilisés par défaut.

Pour envoyer des paramètres POST or GET au serveur, réglez la propriété data de l’objet URLRequest sur vos paramètres et la propriété method sur URLRequestMethod.POST ou URLRequestMethod.GET.

Procède au chargement d’un fichier sur un serveur distant sans encodage.
Lance le chargement d’un fichier dans une URL sans aucun encodage. Tandis que la méthode upload() convertit le fichier en enveloppe de données de formulaire, la méthode uploadUnencoded() transmet le contenu du fichier tel quel dans le corps de la requête HTTP. Utilisez la méthode uploadUnencoded() si les données que vous souhaitez envoyer sont déjà codées dans un format pris en charge par le serveur de réception. En règle générale, la méthode uploadeUnencoded() est utilisée avec la méthode HTTP/WebDAV PUT.
FileReference.browse()FileReferenceList.browse()FileReference.download()FileReferenceList.fileListupload()openflash.events:EventDistribué lors du démarrage d’une opération de chargement. Distribué lors du démarrage d’une opération de chargement.progressflash.events:ProgressEventDistribué régulièrement pendant l’opération de chargement de fichier. Distribué régulièrement pendant l’opération de chargement de fichier.completeflash.events:EventDistribué en cas de réussite de l’opération de chargement. Distribué en cas de réussite de l’opération de chargement.uploadCompleteDataflash.events:DataEventDistribué après réception des données par le serveur suite à un chargement de fichier réussi. Distribué après réception des données par le serveur suite à un chargement de fichier réussi.securityErrorflash.events:SecurityErrorEventDistribué lorsqu’un chargement échoue en raison d’une violation de la sécurité. Distribué lorsqu’un chargement échoue en raison d’une violation de la sécurité.httpStatusflash.events:HTTPStatusEventDistribué lorsqu’un chargement échoue en raison d’une erreur HTTP. Distribué lorsqu’un chargement échoue en raison d’une erreur HTTP.httpResponseStatusflash.events:HTTPStatusEventL’opération de chargement aboutit et le serveur renvoie une URL de réponse, ainsi que des en-têtes de réponse. L’opération de chargement aboutit et le serveur renvoie une URL de réponse, ainsi que des en-têtes de réponse.ioErrorflash.events:IOErrorEventInvoqué dans l’un des cas suivants :
  • Le chargement échoue à la suite d’une erreur d’entrée/de sortie survenue au cours de la lecture, de l’écriture ou de la transmission du fichier par Adobe AIR.
  • Le chargement échoue en raison d’une tentative de chargement d’un fichier vers un serveur nécessitant une authentification (un nom d’utilisateur et un mot de passe, par exemple). Lors du chargement, les utilisateurs ne peuvent pas entrer des mots de passe.
  • Le chargement échoue car le paramètre url contient un protocole non valide. La méthode FileReference.upload() doit utiliser HTTP ou HTTPS.
Appelée dans l’un des cas suivants : Le chargement échoue en raison d’une erreur d’entrée/sortie survenue pendant la lecture, l’écriture ou la transmission du fichier par Adobe AIR. Le chargement échoue en raison d’une tentative de chargement d’un fichier vers un serveur nécessitant une authentification (un nom d’utilisateur et un mot de passe, par exemple).
upload Procède au chargement du fichier sur un serveur distant.Les fichiers SWF non approuvés au niveau local ne peuvent pas communiquer avec Internet. Pour contourner cette restriction, reclassifiez le fichier SWF en tant que fichier local avec accès au réseau ou en tant que fichier approuvé. Cette exception est renvoyée, accompagnée d’un message indiquant le nom du fichier local et l’URL qui ne sont pas accessibles. SecurityErrorSecurityErrorVous 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. SecurityErrorSecurityErrorRenvoyé dans les cas suivants : 1) Une autre session browse FileReference ou FileReferenceList est en cours. Il est impossible d’exécuter plusieurs sessions de recherche de fichiers simultanément. 2) Le paramètre URL n’est pas un chemin ou un protocole valide. Les chargements de fichiers doivent utiliser HTTP, les téléchargements FTP ou HTTP. 3) Le paramètre uploadDataFieldName est réglé sur null. 4) Un paramètre du fichier mms.cfg de l’utilisateur bloque cette opération. IllegalOperationErrorflash.errors:IllegalOperationErrorRenvoyé dans les cas suivants : 1) Le paramètre uploadDataFieldName est une chaîne vide. 2) Le paramètre url.data est de type ByteArray. Lorsqu’il est utilisé avec les méthodes FileReference.upload() et FileReference.download(), le paramètre url.data peut uniquement être de type URLVariables ou String. 3) Dans le moteur d’exécution AIR (sandbox de sécurité de l’application), la méthode de l’objet URLRequest n’est ni GET ni POST (utilisez plutôt uploadEncoded()). ArgumentErrorArgumentErrorCette erreur peut se produire pour les raisons suivantes : 1) Flash Player ne peut pas convertir le paramètre URLRequest.data du format UTF8 au format MBCS. Cette erreur se produit si l’objet URLRequest transmis à FileReference.upload() est configuré pour exécuter une opération GET et si System.useCodePage est réglé sur true. 2) Flash Player ne peut pas allouer de mémoire aux données POST. Cette erreur est applicable si l’objet URLRequest transmis à FileReference.upload() est configuré pour exécuter une opération POST. MemoryErrorflash.errors:MemoryErrorrequestflash.net:URLRequestL’objet URLRequest. La propriété url de cet objet doit contenir l’URL du script serveur configuré pour traiter le chargement via les appels HTTP POST. Dans certains navigateurs, la longueur des chaînes d’URL est limitée. Une longueur supérieure à 256 caractères peut échouer avec certains navigateurs ou serveurs. Si la valeur de ce paramètre est null, une exception est renvoyée. La propriété requestHeaders de l’objet URLRequest est ignorée ; les en-têtes de requête HTTP personnalisés ne sont pas pris en charge dans les chargements et les téléchargements.

L’URL peut être de type HTTP ou, pour les chargements sécurisés, de type HTTPS. Pour utiliser HTTPS, entrez une URL HTTPS dans le paramètre url. Si vous ne spécifiez pas de numéro de port dans le paramètre url, le port 80 pour HTTP et le port 443 pour HTTPS sont utilisés par défaut.

Pour envoyer des paramètres POST or GET au serveur, réglez la propriété data de l’objet URLRequest sur vos paramètres et la propriété method sur URLRequestMethod.POST ou URLRequestMethod.GET.

uploadDataFieldNameStringFiledataNom de champ qui précède les données du fichier dans l’opération de chargement POST. La valeur de uploadDataFieldName doit être chaîne non vide et dont la valeur n’est pas null. Par défaut, la valeur de uploadDataFieldName correspond à Filedata, comme illustré dans l’exemple de requête POST ci-dessous :
    Content-Type: multipart/form-data; boundary=AaB03x
    --AaB03x 
    Content-Disposition: form-data; name="Filedata"; filename="example.jpg" 
    Content-Type: application/octet-stream
    ... contents of example.jpg ... 
    --AaB03x-- 
    
testUploadBooleanfalseParamètre permettant de demander le chargement d’un fichier de test. Si la valeur de testUpload est true, pour les fichiers supérieurs à 10 Ko, Flash Player tente de charger un fichier test POST avec une valeur Content-Length de 0. Le chargement de test vérifie si le chargement du fichier réel peut réussir et si l’authentification du serveur se passera bien, le cas échéant. Seuls les lecteurs Windows prennent en charge les chargements de test. Procède au chargement d’un fichier sur un serveur distant.
Procède au chargement du fichier sur un serveur distant. Flash Player n’impose pas de restrictions au niveau de la taille des fichiers chargés ou téléchargés ; en revanche, le lecteur prend en charge des chargements/téléchargements de 100 Mo au maximum. Vous devez appeler la méthode FileReference.browse() ou FileReferenceList.browse() avant d’appeler cette méthode.

Pour la classe File d’Adobe AIR, qui étend la classe FileReference, vous pouvez utiliser la méthode upload() pour charger n’importe quel fichier. Pour la classe FileReference (utilisée dans Flash Player), l’utilisateur doit tout d’abord sélectionner un fichier.

Les écouteurs reçoivent des événements indiquant la progression du chargement, ainsi que sa réussite ou son échec. Bien que vous puissiez employer l’objet FileReferenceList pour permettre aux utilisateurs de sélectionner plusieurs fichiers à charger, vous devez charger ces fichiers un par un. Pour ce faire, exécutez une itération dans le tableau FileReferenceList.fileList des objets FileReference.

Les fonctions FileReference.upload() et FileReference.download() ne sont pas bloquantes. Elles sont renvoyées après leur appel, avant la fin de la transmission de fichiers. En outre, si l’objet FileReference sort de son domaine, tout chargement ou téléchargement qui n’est pas encore terminé sur cet objet est annulé à ce moment-là. Veillez à ce que l’objet FileReference demeure dans son domaine pendant toute la durée prévue du chargement ou du téléchargement.

Le fichier est chargé dans l’URL transmise dans le paramètre url. L’URL doit être un script serveur configuré pour accepter les chargements. Flash Player charge les fichiers à l’aide de la méthode HTTP POST. Le script serveur qui gère le chargement doit attendre une requête POST comportant les éléments suivants :

  • Content-Type de multipart/form-data
  • Un élément Content-Disposition avec un attribut name défini sur Filedata par défaut et filename réglé sur le nom du fichier d’origine
  • Le contenu binaire du fichier

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.

Vous trouverez un exemple de requête POST dans la description du paramètre uploadDataFieldName. Vous pouvez envoyer les paramètres POST ou GET au serveur à l’aide de la méthode upload(). Consultez la description du paramètre request.

Si le paramètre testUpload est réglé sur true et que la taille du fichier à charger est supérieure à 10 Ko environ, sous Windows, Flash Player envoie d’abord une opération POST de test vide, avant le fichier lui-même, pour vérifier si la transmission est susceptible d’aboutir. Flash Player envoie ensuite une seconde opération POST contenant le fichier lui-même. Si la taille du fichier est inférieure à 10 Ko, Flash Player exécute une seule opération POST contenant le fichier lui-même. Sous Macintosh, Flash Player n’exécute pas d’opérations de chargement POST de test.

Remarque : si votre serveur requiert l’authentification des utilisateurs, seuls les fichiers SWF s’exécutant dans un navigateur (c’est-à-dire avec le plug-in de navigation ou un contrôle ActiveX), peuvent fournir une boîte de dialogue qui demande à l’utilisateur son identifiant et son mot de passe d’authentification, ceci uniquement pour les téléchargements. Le transfert de fichiers échoue si le chargement est effectué à l’aide du plug-in ou d’un contrôle ActiveX, ou si un chargement/téléchargement est effectué par le biais du lecteur autonome ou externe.

Lorsque vous employez cette méthode, tenez compte du modèle de sécurité de Flash Player :

  • Les opérations de chargement sont interdites si le fichier SWF appelant se trouve dans un sandbox local non approuvé.
  • Par défaut, l’accès entre les sandbox est refusé. Un site Web peut autoriser l’accès à une ressource en ajoutant un fichier de régulation d’URL.
  • 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.

Néanmoins, dans Adobe AIR, le contenu du sandbox de sécurité application (contenu installé avec l’application AIR) n’est pas soumis à ces restrictions de sécurité.

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

Notez que lors de la publication dans Flash Player 10, les nouvelles fonctionnalités ajoutées au lecteur ne vous permettent d’exécuter qu’une seule opération à la fois : FileReference.browse(), FileReference.upload(), FileReference.download(), FileReference.load() ou FileReference.save(). Dans le cas contraire, Flash Player renvoie une erreur d’exécution (code 2174). Utilisez FileReference.cancel() pour arrêter une opération en cours. Cette restriction s’applique uniquement à Flash Player 10. Cette restriction sur l’exécution simultanée de plusieurs opérations ne s’applique pas aux versions précédentes de Flash Player.

FileReference.browse()FileReferenceList.browse()FileReference.download()FileReferenceList.fileListFileReference.load()openflash.events:EventDistribué lors du démarrage d’une opération de chargement. Distribué lors du démarrage d’une opération de chargement.progressflash.events:ProgressEventDistribué régulièrement pendant l’opération de chargement de fichier. Distribué régulièrement pendant l’opération de chargement de fichier.completeflash.events:EventDistribué en cas de réussite de l’opération de chargement. Distribué en cas de réussite de l’opération de chargement.uploadCompleteDataflash.events:DataEventDistribué après réception des données par le serveur suite à un chargement de fichier réussi. Distribué après réception des données par le serveur suite à un chargement de fichier réussi.securityErrorflash.events:SecurityErrorEventDistribué lorsqu’un chargement échoue en raison d’une violation de la sécurité. Distribué lorsqu’un chargement échoue en raison d’une violation de la sécurité.httpStatusflash.events:HTTPStatusEventDistribué lorsqu’un chargement échoue en raison d’une erreur HTTP. Distribué lorsqu’un chargement échoue en raison d’une erreur HTTP.httpResponseStatusflash.events:HTTPStatusEventL’opération de chargement aboutit et le serveur renvoie une URL de réponse, ainsi que des en-têtes de réponse. L’opération de chargement aboutit et le serveur renvoie une URL de réponse, ainsi que des en-têtes de réponse.ioErrorflash.events:IOErrorEventInvoqué dans l’un des cas suivants :
  • Le chargement échoue à la suite d’une erreur d’entrée/de sortie survenue au cours de la lecture, de l’écriture ou de la transmission du fichier par Flash Player ou Adobe AIR.
  • Le chargement échoue en raison d’une tentative de chargement d’un fichier vers un serveur nécessitant une authentification (un nom d’utilisateur et un mot de passe, par exemple). Lors du chargement, les utilisateurs ne peuvent pas entrer des mots de passe.
  • Le chargement échoue car le paramètre url contient un protocole non valide. La méthode FileReference.upload() doit utiliser HTTP ou HTTPS.
Appelée dans l’un des cas suivants : Le chargement échoue en raison d’une erreur d’entrée/sortie survenue pendant la lecture, l’écriture ou la transmission du fichier par Flash Player ou Adobe AIR. Le chargement échoue en raison d’une tentative de chargement d’un fichier vers un serveur nécessitant une authentification (un nom d’utilisateur et un mot de passe, par exemple).
creationDate Date de création du fichier dans le disque local.DateSi l’appel de la méthode FileReference.browse(), FileReferenceList.browse() ou FileReference.download() n’a pas abouti, une exception est renvoyée, accompagnée d’un message indiquant que des fonctions ont été appelées dans un ordre incorrect ou qu’un appel antérieur a échoué. Dans ce cas, la valeur de la propriété creationDate correspond à null. IllegalOperationErrorflash.errors:IllegalOperationErrorS’il est impossible d’accéder aux informations relatives au fichier, une exception indiquant qu’une erreur d’E/S s’est produite sur un fichier est renvoyée. IOErrorflash.errors:IOErrorObtient la date de création du fichier en tant qu’objet Date. Date de création du fichier dans le disque local. Si l’objet n’a pas été renseigné, l’appel effectué pour obtenir la valeur de cette propriété renvoie null. FileReference.browse()creator Type de créateur Macintosh du fichier, uniquement utilisé dans les versions Mac OS antérieures à Mac OS X.StringSous Macintosh, si l’appel de la méthode FileReference.browse(), FileReferenceList.browse() ou FileReference.download() n’a pas abouti, une exception est renvoyée, accompagnée d’un message indiquant que des fonctions ont été appelées dans un ordre incorrect ou qu’un appel antérieur a échoué. Dans ce cas, la valeur de la propriété creator correspond à null. IllegalOperationErrorflash.errors:IllegalOperationErrorType de créateur Macintosh. Type de créateur Macintosh du fichier, uniquement utilisé dans les versions Mac OS antérieures à Mac OS X. Sous Windows ou Linux, cette propriété est null. Si l’objet FileReference n’a pas été renseigné, l’appel effectué pour obtenir la valeur de cette propriété renvoie null. FileReference.browse()FileReference.extensiondata L’objet ByteArray représentant les données du fichier chargé après l’aboutissement d’un appel de la méthode load().flash.utils:ByteArraySi l’appel de la méthode load() n’a pas abouti, une exception est renvoyée, accompagnée d’un message indiquant que des fonctions ont été appelées dans un ordre incorrect ou qu’un appel antérieur a échoué. Dans ce cas, la valeur de la propriété data est null. IllegalOperationErrorflash.errors:IllegalOperationErrorSi l’ouverture ou la lecture du fichier est impossible, ou qu’une autre erreur d’accès au fichier survient, une exception indiquant qu’une erreur d’entrée ou de sortie s’est produite dans le fichier est renvoyée. Dans ce cas, la valeur de la propriété data est null. IOErrorflash.errors:IOErrorDonnées chargées du fichier, sous forme de ByteArray. L’objet ByteArray représentant les données du fichier chargé après l’aboutissement d’un appel de la méthode load(). FileReference.browse()FileReference.load()extension Extension du fichier.StringSi la référence n’est pas initialisée. IllegalOperationErrorflash.errors:IllegalOperationError Extension du fichier.

L’extension d’un fichier correspond à la partie du nom qui suit le point final (« . »), sans inclure ce dernier. Si le nom du fichier ne comporte aucun point, l’extension est null.

Remarque : vous devez utiliser la propriété extension pour déterminer le type d’un fichier ; n’utilisez pas les propriétés creator et type. Ces propriétés sont en effet déconseillées, car elles s’appliquent à d’anciennes versions de Mac OS.

modificationDate Date de la dernière modification du fichier dans le disque local.DateSi l’appel de la méthode FileReference.browse(), FileReferenceList.browse() ou FileReference.download() n’a pas abouti, une exception est renvoyée, accompagnée d’un message indiquant que des fonctions ont été appelées dans un ordre incorrect ou qu’un appel antérieur a échoué. Dans ce cas, la valeur de la propriété modificationDate correspond à null. IllegalOperationErrorflash.errors:IllegalOperationErrorS’il est impossible d’accéder aux informations relatives au fichier, une exception indiquant qu’une erreur d’E/S s’est produite sur un fichier est renvoyée. IOErrorflash.errors:IOErrorObtient la date de modification du fichier en tant qu’objet Date. Date de la dernière modification du fichier dans le disque local. Si l’objet FileReference n’a pas été renseigné, l’appel effectué pour obtenir la valeur de cette propriété renvoie null. FileReference.browse()name Nom du fichier dans le disque local.StringSi l’appel de la méthode FileReference.browse(), FileReferenceList.browse() ou FileReference.download() n’a pas abouti, une exception est renvoyée, accompagnée d’un message indiquant que des fonctions ont été appelées dans un ordre incorrect ou qu’un appel antérieur a échoué. IllegalOperationErrorflash.errors:IllegalOperationErrorObtient le nom du fichier sous forme de chaîne. Nom du fichier dans le disque local. Si l’objet FileReference n’a pas été renseigné (via un appel valide à FileReference.download() ou à FileReference.browse()), Flash Player renvoie une erreur lorsque vous tentez d’obtenir la valeur de cette propriété.

Toutes les propriétés d’un objet FileReference sont renseignées par appel de la méthode browse(). A la différence des autres propriétés FileReference, si vous appelez la méthode download(), la propriété name est renseignée lors de la distribution de l’événement select.

FileReference.browse()
size Taille du fichier dans le disque local, en octets.NumberSi l’appel de la méthode FileReference.browse(), FileReferenceList.browse() ou FileReference.download() n’a pas abouti, une exception est renvoyée, accompagnée d’un message indiquant que des fonctions ont été appelées dans un ordre incorrect ou qu’un appel antérieur a échoué. IllegalOperationErrorflash.errors:IllegalOperationErrorSi l’ouverture ou la lecture du fichier est impossible, ou qu’une autre erreur d’accès au fichier survient, une exception indiquant qu’une erreur d’entrée ou de sortie s’est produite dans le fichier est renvoyée. IOErrorflash.errors:IOErrorLa taille du fichier en octets. Taille du fichier dans le disque local, en octets. Si la propriété size est définie sur 0, une exception est renvoyée.

Remarque : dans la version initiale d’ActionScript 3.0, la propriété size était définie en tant qu’objet uint, qui prenait en charge des fichiers pouvant atteindre 4 Go. Elle est désormais désignée comme objet Number afin de prendre en charge des fichiers plus volumineux.

FileReference.browse()
type Type de fichier.StringSi l’appel de la méthode FileReference.browse(), FileReferenceList.browse() ou FileReference.download() n’a pas abouti, une exception est renvoyée, accompagnée d’un message indiquant que des fonctions ont été appelées dans un ordre incorrect ou qu’un appel antérieur a échoué. Dans ce cas, la valeur de la propriété type correspond à null. IllegalOperationErrorflash.errors:IllegalOperationErrorRécupère le type ou l’extension du fichier. Type de fichier.

Sous Windows ou Linux, cette propriété correspond à l’extension de fichier. Sous Macintosh, cette propriété correspond au type de fichier à quatre caractères, uniquement utilisé dans les versions de Mac OS antérieures à Mac OS X. Si l’objet FileReference n’a pas été renseigné, un appel permettant d’obtenir la valeur de cette propriété renvoie null.

Sous Windows, Linux et Mac OS X, l’extension du fichier, c’est-à-dire la partie de la propriété name qui suit la dernière occurrence du point (.), permet d’identifier le type de fichier.

FileReference.extension
FileReferenceList La classe FileReferenceList permet aux utilisateurs de sélectionner un ou plusieurs fichiers à charger.Permet de charger un ou plusieurs fichiers. flash.events:EventDispatcher La classe FileReferenceList permet aux utilisateurs de sélectionner un ou plusieurs fichiers à charger. Un objet FileReferenceList représente un groupe de fichiers locaux présents dans le disque de l’utilisateur sous forme de tableau d’objets FileReference. Pour obtenir des informations détaillées et les principales caractéristiques relatives aux objets et à la classe FileReference, que vous utilisez avec FileReferenceList, voir la classe FileReference.

Pour utiliser la classe FileReferenceList :

  • Instanciez la classe : var myFileRef = new FileReferenceList();
  • Appelez la méthode FileReferenceList.browse(), pour afficher une boîte de dialogue dans laquelle l’utilisateur peut choisir un ou plusieurs fichiers à charger : myFileRef.browse();
  • Après l’appel de la méthode browse(), la propriété fileList de l’objet FileReferenceList est renseignée à l’aide d’un tableau d’objets FileReference.
  • Appelez FileReference.upload() sur chaque élément du tableau fileList.

La classe FileReferenceList comprend une méthode browse() et une propriété fileList pour travailler avec plusieurs fichiers. Lors de l’exécution d’un appel à la méthode FileReferenceList.browse(), la lecture du fichier SWF s’interrompt dans les versions autonomes et externes de Flash Player et AIR pour Linux, et Mac OS X version 10.1 et antérieures.

L’exemple suivant indique comment utiliser des événements pour gérer le chargement de plusieurs fichiers. La classe CustomFileReferenceList étend FileReferenceList et comprend un événement complete, distribué au chargement de chaque fichier que contient l’objet FileReferenceList. L’événement LIST_COMPLETE de la classe FileReferenceListExample est distribué après le chargement de tous les fichiers de l’objet FileReferenceList.

Pour exécuter cet exemple, placez un script conçu pour accepter un chargement de fichiers à l’adresse http://www.[yourDomain].com/yourUploadHandlerScript.cfm. Selon l’emplacement de votre fichier SWF et la destination des fichiers à charger, vous aurez peut-être besoin de compiler le fichier SWF avec l’option Protection de lecture locale définie sur Accéder au réseau seulement ou de mettre à jour vos paramètres de sécurité Flash® Player pour autoriser ce fichier à accéder au réseau. Si le serveur de chargement est distant et que vous exécutez cet exemple depuis votre ordinateur de bureau, assurez-vous que le serveur contienne un fichier crossdomain.xml.

package { import flash.display.Sprite; import flash.events.*; import flash.net.FileReference; import flash.net.FileReferenceList; public class FileReferenceListExample extends Sprite { public static var LIST_COMPLETE:String = "listComplete"; public function FileReferenceListExample() { initiateFileUpload(); } private function initiateFileUpload():void { var fileRef:CustomFileReferenceList = new CustomFileReferenceList(); fileRef.addEventListener(FileReferenceListExample.LIST_COMPLETE, listCompleteHandler); fileRef.browse(fileRef.getTypes()); } private function listCompleteHandler(event:Event):void { trace("listCompleteHandler"); } } } import flash.events.*; import flash.net.FileReference; import flash.net.FileReferenceList; import flash.net.FileFilter; import flash.net.URLRequest; class CustomFileReferenceList extends FileReferenceList { private var uploadURL:URLRequest; private var pendingFiles:Array; public function CustomFileReferenceList() { uploadURL = new URLRequest(); uploadURL.url = "http://www.[yourDomain].com/yourUploadHandlerScript.cfm"; initializeListListeners(); } private function initializeListListeners():void { addEventListener(Event.SELECT, selectHandler); addEventListener(Event.CANCEL, cancelHandler); } public function getTypes():Array { var allTypes:Array = new Array(); allTypes.push(getImageTypeFilter()); allTypes.push(getTextTypeFilter()); return allTypes; } private function getImageTypeFilter():FileFilter { return new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)", "*.jpg;*.jpeg;*.gif;*.png"); } private function getTextTypeFilter():FileFilter { return new FileFilter("Text Files (*.txt, *.rtf)", "*.txt;*.rtf"); } private function doOnComplete():void { var event:Event = new Event(FileReferenceListExample.LIST_COMPLETE); dispatchEvent(event); } private function addPendingFile(file:FileReference):void { trace("addPendingFile: name=" + file.name); pendingFiles.push(file); file.addEventListener(Event.OPEN, openHandler); file.addEventListener(Event.COMPLETE, completeHandler); file.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); file.addEventListener(ProgressEvent.PROGRESS, progressHandler); file.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); file.upload(uploadURL); } private function removePendingFile(file:FileReference):void { for (var i:uint; i < pendingFiles.length; i++) { if (pendingFiles[i].name == file.name) { pendingFiles.splice(i, 1); if (pendingFiles.length == 0) { doOnComplete(); } return; } } } private function selectHandler(event:Event):void { trace("selectHandler: " + fileList.length + " files"); pendingFiles = new Array(); var file:FileReference; for (var i:uint = 0; i < fileList.length; i++) { file = FileReference(fileList[i]); addPendingFile(file); } } private function cancelHandler(event:Event):void { var file:FileReference = FileReference(event.target); trace("cancelHandler: name=" + file.name); } private function openHandler(event:Event):void { var file:FileReference = FileReference(event.target); trace("openHandler: name=" + file.name); } private function progressHandler(event:ProgressEvent):void { var file:FileReference = FileReference(event.target); trace("progressHandler: name=" + file.name + " bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal); } private function completeHandler(event:Event):void { var file:FileReference = FileReference(event.target); trace("completeHandler: name=" + file.name); removePendingFile(file); } private function httpErrorHandler(event:Event):void { var file:FileReference = FileReference(event.target); trace("httpErrorHandler: name=" + file.name); } private function ioErrorHandler(event:Event):void { var file:FileReference = FileReference(event.target); trace("ioErrorHandler: name=" + file.name); } private function securityErrorHandler(event:Event):void { var file:FileReference = FileReference(event.target); trace("securityErrorHandler: name=" + file.name + " event=" + event.toString()); } }
FileReferenceselect Distribué lorsque l’utilisateur sélectionne un ou plusieurs fichiers à charger dans la boîte de dialogue de recherche de fichiers.flash.events.Event.SELECTflash.events.Event Distribué lorsque l’utilisateur sélectionne un ou plusieurs fichiers à charger dans la boîte de dialogue de recherche de fichiers (cette boîte de dialogue s’ouvre quand vous appelez la méthode FileReferenceList.browse(), FileReference.browse() ou FileReference.download()). Lorsque l’utilisateur sélectionne un fichier et confirme l’opération (par exemple, en cliquant sur Enregistrer), l’objet FileReferenceList est renseigné par les objets FileReference représentant les fichiers sélectionnés par l’utilisateur. FileReferenceList.browse()cancel Distribué lorsque l’utilisateur ferme la boîte de dialogue de recherche de fichiers.flash.events.Event.CANCELflash.events.Event Distribué lorsque l’utilisateur ferme la boîte de dialogue de recherche de fichiers (cette boîte de dialogue s’ouvre quand vous appelez la méthode FileReferenceList.browse(), FileReference.browse() ou FileReference.download()). FileReferenceList.browse()FileReferenceList Crée un nouvel objet FileReferenceList. Crée un nouvel objet FileReferenceList. Tout objet FileReferenceList reste vide tant que vous n’avez pas appelé pour lui la méthode browse() et que l’utilisateur n’a pas sélectionné de fichiers. Quand vous appelez browse() sur l’objet FileReference, sa propriété fileList est renseignée par un tableau d’objets FileReference. FileReferenceFileReferenceList.browse()browse Affiche une boîte de dialogue de recherche de fichiers dans laquelle l’utilisateur peut sélectionner un ou plusieurs fichiers locaux à charger.Renvoyé dans les cas suivants : 1) Une autre session browse FileReference ou FileReferenceList est en cours. Il est impossible d’exécuter plusieurs sessions de recherche de fichiers simultanément. 2) Un paramètre du fichier mms.cfg de l’utilisateur bloque cette opération. IllegalOperationErrorflash.errors:IllegalOperationErrorUne exception est renvoyée si le tableau typeFilter contient des objets FileFilter incorrectement formatés. Pour plus d’informations sur le formatage correct des filtres, voir la documentation FileFilter. ArgumentErrorArgumentErrorSi la méthode n’est pas appelée en réponse à l’action d’un utilisateur, notamment à un événement de type souris ou pression de touche. ErrorErrorRenvoie true si les paramètres sont valides et que la boîte de dialogue de recherche de fichiers est ouverte. BooleantypeFilterArraynullTableau d’occurrences de FileFilter utilisé pour filtrer les fichiers qui s’affichent dans la boîte de dialogue. Si vous omettez ce paramètre, tous les fichiers s’affichent. Pour plus d’informations, voir la classe FileFilter. Affiche une boîte de dialogue de recherche de fichiers dans laquelle l’utilisateur peut sélectionner des fichiers locaux à charger. Affiche une boîte de dialogue de recherche de fichiers dans laquelle l’utilisateur peut sélectionner un ou plusieurs fichiers locaux à charger. La boîte de dialogue est spécifique au système d’exploitation de l’utilisateur.

Dans Flash Player versions 10 et ultérieures, l’appel de cette méthode aboutit uniquement en réponse à un événement utilisateur (par exemple, un événement de type clic de souris ou pression de touche). Dans les autres cas, Flash Player renvoie une erreur à l’appel de cette méthode.

Lorsque vous appelez cette méthode et que l’utilisateur réussit à sélectionner des fichiers, la propriété fileList de cet objet FileReferenceList est renseignée par un tableau d’objets FileReference, à raison d’un objet pour chaque fichier sélectionné par l’utilisateur. Par la suite, à chaque appel de la méthode FileReferenceList.browse(), la propriété FileReferenceList.fileList est réinitialisée en fonction des fichiers sélectionnés par l’utilisateur dans la boîte de dialogue.

Le paramètre typeFilter vous permet de déterminer les fichiers répertoriés dans la boîte de dialogue.

Une seule session FileReference.browse(), FileReference.download() ou FileReferenceList.browse() peut être effectuée à la fois sur un objet FileReferenceList (car une seule boîte de dialogue peut être ouverte à la fois).

FileReference.browse()Classe FileReferenceFileFilter, classeselectflash.events:EventAppelé quand l’utilisateur réussit à sélectionner un élément à charger dans la boîte de dialogue. Appelé quand l’utilisateur réussit à sélectionner un élément à charger dans la boîte de dialogue.cancelflash.events:EventAppelé quand l’utilisateur quitte la boîte de dialogue en cliquant sur Annuler ou en la fermant. Appelé quand l’utilisateur quitte la boîte de dialogue en cliquant sur Annuler ou en la fermant.
fileList Un tableau d’objets FileReference.ArrayUn tableau d’objets FileReference. Tableau d’objets FileReference.

Quand la méthode FileReferenceList.browse() est appelée et que l’utilisateur a sélectionné un ou plusieurs fichiers dans la boîte de dialogue ouverte par la méthode browse(), cette propriété est renseignée par un tableau d’objets FileReference qui représentent les fichiers que l’utilisateur a sélectionnés. Vous pouvez ensuite utiliser ce tableau pour charger les fichiers par le biais de la méthode FileReference.upload(). Vous devez charger les fichiers un par un.

La propriété fileList est renseignée à nouveau à chaque appel de la méthode browse() sur cet objet FileReferenceList.

Les propriétés des objets FileReference sont décrites dans la documentation relative à la classe FileReference.

FileReferenceFileReference.upload()FileReferenceList.browse()
NetworkInterface La classe NetworkInterface décrit une interface réseau.Object La classe NetworkInterface décrit une interface réseau.

Vous pouvez obtenir une liste des interfaces réseau en appelant la méthode findInterfaces() d’un objet NetworkInfo.

NetworkInfoInterfaceAddressactive Indique si cette interface est active.Boolean Indique si cette interface est active. addresses Liste des adresses liées à cette interface réseau. Liste des adresses liées à cette interface réseau. displayName Nom d’affichage de cette interface réseau.String Nom d’affichage de cette interface réseau. hardwareAddress Adresse matérielle de cette interface réseau.String Adresse matérielle de cette interface réseau.

L’adresse matérielle correspond généralement à l’adresse MAC (Media Access Control, contrôle d’accès au média) de l’adaptateur ou de la carte réseau.

mtu Unité de transmission maximale (UTM) de cette interface réseau.int Unité de transmission maximale (UTM) de cette interface réseau.

Si la valeur mtu est -1, l’UTM actuelle est inconnue.

name Nom de cette interface réseau.String Nom de cette interface réseau. parent Objet NetworkInterface représentant l’interface parent (si cette interface a un parent).flash.net:NetworkInterface Objet NetworkInterface représentant l’interface parent (si cette interface a un parent).

Cette interface peut avoir un parent s’il s’agit d’une sous-interface. La propriété parent est définie sur null si cette interface n’a pas de parent.

subInterfaces Liste des sous-interfaces associées à cette interface réseau. Liste des sous-interfaces associées à cette interface réseau.

Les sous-interfaces sont souvent des interfaces virtuelles. La propriété subInterfaces est définie sur null si cette interface ne possède aucune sous-interface.

SharedObjectFlushStatus La classe SharedObjectFlushStatus fournit des valeurs pour le code renvoyé par un appel à la méthode SharedObject.flush().Object La classe SharedObjectFlushStatus fournit des valeurs pour le code renvoyé par un appel à la méthode SharedObject.flush(). SharedObject.flush()FLUSHED Indique que la purge s’est bien terminée.flushedString Indique que la purge s’est bien terminée. SharedObject.flush()PENDING Indique que l’utilisateur a été invité à augmenter l’espace disque pour l’objet partagé avant la purge.pendingString Indique que l’utilisateur a été invité à augmenter l’espace disque pour l’objet partagé avant la purge. SharedObject.flush()SecureSocket La classe SecureSocket permet au code d’établir des connexions socket à l’aide des protocoles SSL (Secure Sockets Layer) et TLS (Transport Layer Security). flash.net:Socket La classe SecureSocket permet au code d’établir des connexions socket à l’aide des protocoles SSL (Secure Sockets Layer) et TLS (Transport Layer Security).

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

Les protocoles SSL/TLS fournissent un mécanisme grâce auquel il est possible d’authentifier l’identité d’un hôte par le biais de son certificat et offrent une communication chiffrée sur le socket. SSLv3 et TLSv1 sont pris en charge. Le certificat de serveur est validé à l’aide du magasin d’approbations et de la fonction de validation de certificat de la plate-forme client.

La classe SecureSocket ne se connecte aux serveurs qu’avec des certificats valides et approuvés. Vous ne pouvez pas vous connecter à un serveur si son certificat pose problème. Par exemple, il est impossible de se connecter à un serveur avec un certificat périmé ou avec un certificat qui n’est pas lié à un certificat racine approuvé, même si ce certificat serait valide dans d’autres cas.

La classe SecureSocket est utile pour établir la communication chiffrée à un serveur approuvé. A d’autres égards, un objet SecureSocket se comporte comme un objet Socket standard.

Pour utiliser les méthodes de la classe SecureSocket, utilisez tout d’abord le constructeur, new SecureSocket(), pour créer un objet SecureSocket. Lorsque vous vous connectez à un serveur, le certificat de serveur est validé. Si le certificat est validé et approuvé, la connexion est établie et le socket distribue un événement connect. S’il est impossible de valider le certificat, le socket distribue un événement IOError.

Important : le protocole OCSP (Online Certificate Status Protocol) n’est pas pris en charge sur tous les systèmes d’exploitation. Les utilisateurs peuvent également désactiver la vérification OCSP sur des ordinateurs individuels. Si le protocole OCSP n’est pas pris en charge ou s’il est désactivé et si un certificat ne contient pas les informations nécessaires permettant de vérifier la révocation à l’aide d’une liste de révocation de certificats, la révocation des certificats n’est pas vérifiée. Le certificat est accepté s’il est valide. Cela pourrait autoriser un serveur à utiliser un certificat révoqué.

L’exemple suivant explique comment créer et connecter un objet SecureSocket. package { import flash.display.Sprite; import flash.errors.IOError; import flash.events.Event; import flash.events.IOErrorEvent; import flash.net.SecureSocket; public class SecureSocketExample extends Sprite { private var secureSocket:SecureSocket = new SecureSocket(); public function SecureSocketExample() { secureSocket.addEventListener( Event.CONNECT, onConnect ) secureSocket.addEventListener( IOErrorEvent.IO_ERROR, onError ); try { secureSocket.connect( "208.77.188.166", 443 ); } catch ( error:Error ) { trace ( error.toString() ); } } private function onConnect( event:Event ):void { trace("Connected."); } private function onError( error:IOErrorEvent ):void { trace( error.text + ", " + secureSocket.serverCertificateStatus ); } } }
Classe SocketsocketData Distribué lorsqu’un socket a reçu des données.flash.events.ProgressEvent.SOCKET_DATAflash.events.ProgressEvent Distribué lorsqu’un socket a reçu des données. Les événements de type socketData n’utilisent pas la propriété ProgressEvent.bytesTotal. ioError Distribué lorsqu’il se produit une erreur d’entrée ou de sortie entraînant l’échec d’une opération d’envoi ou de réception.flash.events.IOErrorEvent.IO_ERRORflash.events.IOErrorEvent Distribué lorsqu’il se produit une erreur d’entrée ou de sortie entraînant l’échec d’une opération d’envoi ou de réception.

Lorsqu’il s’avère impossible de valider un certificat de serveur, l’événement d’erreur distribué est de type IOError. Dans ce cas, vous pouvez vérifier la propriété serverCertificateStatus pour déterminer la cause du problème.

connect Distribué lorsqu’une connexion réseau est établie.flash.events.Event.CONNECTflash.events.Event Distribué lorsqu’une connexion réseau est établie. close Distribué lorsque le serveur ferme la connexion socket.flash.events.Event.CLOSEflash.events.Event Distribué lorsque le serveur ferme la connexion socket.

L’événement close se produit uniquement lorsque le serveur ferme la connexion. Il n’est pas distribué lorsque vous appelez la méthode SecureSocket.close().

SecureSocket Crée un nouvel objet SecureSocket.Cette erreur se produit lorsque SSLv3 ou TLSv1 n’est pas pris en charge. IllegalOperationErrorflash.errors:IllegalOperationError Crée un nouvel objet SecureSocket.

Vérifiez SecureSocket.isSupported avant toute tentative de création d’une occurrence de SecureSocket. Si le socket SSLv3 ou TLSv1 n’est pas pris en charge, le moteur d’exécution renvoie une erreur IllegalOperationError.

connect Connecte le socket à l’hôte et au port spécifiés à l’aide du protocole SSL ou TLS.Aucun hôte n’a été spécifié et la connexion a échoué. IOErrorflash.errors:IOErrorCette erreur se produit si vous spécifiez un port de socket inférieur à zéro ou supérieur à 65535. SecurityErrorSecurityErrorhostStringNom ou adresse IP de l’hôte auquel la connexion doit être établie. portintNuméro du port auquel établir la connexion. Connecte le socket à l’hôte et au port spécifiés à l’aide du protocole SSL ou TLS.

Lorsque vous appelez la méthode connect(), le certificat de serveur est validé. Si la connexion SSL/TLS aboutit, et si le certificat est valide et approuvé, la connexion est établie et le socket distribue un événement connect. Si la connexion échoue ou s’il est impossible de valider le certificat, le socket distribue un événement IOError. Vous pouvez vérifier les résultats de validation du certificat en lisant la propriété serverCertificateStatus après la distribution de l’un de ces événements. (Lorsqu’un événement connect est distribué, l’état du certificat est toujours approuvé.)

Si le socket est déjà connecté, la connexion existante est d’abord fermée.

connectflash.events:EventDistribué lorsqu’une connexion réseau est établie. Distribué lorsqu’une connexion réseau est établie.ioErrorflash.events:IOErrorEventDistribué lorsqu’un hôte est spécifié et qu’il se produit une erreur d’entrée/sortie entraînant l’échec de la connexion. Il peut s’agir d’erreurs de communication SSL/TLS et de tout échec de validation du certificat de serveur de l’hôte. Distribué lorsqu’un hôte est spécifié et qu’il se produit une erreur d’entrée/sortie entraînant l’échec de la connexion.
isSupported Indique si les sockets sécurisés sont pris en charge sur le système actuel.Boolean Indique si les sockets sécurisés sont pris en charge sur le système actuel.

Les sockets sécurisés ne sont pas pris en charge sur toutes les plates-formes. Vérifiez cette propriété avant toute tentative de création d’une nouvelle occurrence de SecureSocket.

serverCertificateStatus Etat du certificat du serveur.String Etat du certificat du serveur.

L’état est CertificateStatus.UNKNOWN jusqu’à ce que le socket tente d’établir une connexion à un serveur. Après validation, l’état est l’une des chaînes énumérées par la classe CertificateStatus. La connexion aboutit uniquement lorsque le certificat est validé et approuvé. Par conséquent, après un événement connect, l’état est toujours approuvé.

Remarque : une fois le certificat validé ou rejeté, la valeur d’état n’est pas mise à jour jusqu’au prochain appel de la méthode connect(). L’appel de la méthode close() ne rétablit pas l’état sur la valeur « unknown ».

Classe CertificateStatus
ServerSocket La classe ServerSocket permet au code d’agir comme un serveur pour les connexions TCP (Transport Control Protocol, protocole de contrôle de transmission).flash.events:EventDispatcher La classe ServerSocket permet au code d’agir comme un serveur pour les connexions TCP (Transport Control Protocol, protocole de contrôle de transmission).

Prise en charge du profil AIR : cette fonctionnalité est prise en charge sur tous les systèmes d’exploitation de bureau, mais ne l’est pas sur les périphériques mobiles ou 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é ServerSocket.isSupported. Voir Prise en charge du profil AIR pour plus d’informations sur la prise en charge de l’API dans plusieurs profils.

Un serveur TCP écoute les connexions entrantes de clients distants. Lorsqu’un client tente de se connecter, l’objet ServerSocket distribue un événement connect. L’objet ServerSocketConnectEvent distribué pour l’événement fournit un objet Socket représentant la connexion TCP entre le serveur et le client. Utilisez cet objet Socket pour les communications suivantes avec le client connecté. Le cas échéant, l’objet Socket peut vous fournir l’adresse et le port du client.

Remarque : votre application est chargée de maintenir une référence à l’objet Socket du client. Dans le cas contraire, l’objet peut être nettoyé et détruit par le moteur d’exécution sans avertissement.

Pour placer un objet ServerSocket en état d’écoute, appelez la méthode listen(). En état d’écoute, l’objet ServerSocket distribue des événements connect dès qu’un client qui utilise le protocole TCP tente de se connecter à l’adresse et au port liés. L’objet ServerSocket continue d’écouter les connexions jusqu’à ce que vous appeliez la méthode close().

Les connexions TCP sont continues. Elles sont maintenues jusqu’à ce que l’un des côtés de la connexion la ferme (ou en cas d’échec réseau grave). Toutes les données envoyées via la connexion sont divisées en paquets transmissibles, puis reconstituées à l’autre extrémité de la connexion. Dans la limite du possible, tous les paquets sont transmis et tous les paquets perdus sont retransmis. En général, le protocole TCP gère mieux la bande passante réseau disponible que le protocole UDP. La plupart des applications AIR qui nécessitent des communications socket doivent utiliser les classes ServerSocket et Socket plutôt que la classe DatagramSocket.

La classe ServerSocket peut être utilisée uniquement dans les applications d’Adobe AIR et uniquement dans le sandbox de sécurité de l’application.

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

L’exemple suivant crée un serveur socket. Pour utiliser le serveur, liez le socket à un port local, puis connectez-vous à ce port à partir d’une autre application. Le serveur interprète uniquement les chaînes UTF-8. package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.events.ProgressEvent; import flash.events.ServerSocketConnectEvent; import flash.net.ServerSocket; import flash.net.Socket; import flash.text.TextField; import flash.text.TextFieldType; import flash.utils.ByteArray; public class ServerSocketExample extends Sprite { private var serverSocket:ServerSocket = new ServerSocket(); private var clientSocket:Socket; private var localIP:TextField; private var localPort:TextField; private var logField:TextField; private var message:TextField; public function ServerSocketExample() { setupUI(); } private function onConnect( event:ServerSocketConnectEvent ):void { clientSocket = event.socket; clientSocket.addEventListener( ProgressEvent.SOCKET_DATA, onClientSocketData ); log( "Connection from " + clientSocket.remoteAddress + ":" + clientSocket.remotePort ); } private function onClientSocketData( event:ProgressEvent ):void { var buffer:ByteArray = new ByteArray(); clientSocket.readBytes( buffer, 0, clientSocket.bytesAvailable ); log( "Received: " + buffer.toString() ); } private function bind( event:Event ):void { if( serverSocket.bound ) { serverSocket.close(); serverSocket = new ServerSocket(); } serverSocket.bind( parseInt( localPort.text ), localIP.text ); serverSocket.addEventListener( ServerSocketConnectEvent.CONNECT, onConnect ); serverSocket.listen(); log( "Bound to: " + serverSocket.localAddress + ":" + serverSocket.localPort ); } private function send( event:Event ):void { try { if( clientSocket != null && clientSocket.connected ) { clientSocket.writeUTFBytes( message.text ); clientSocket.flush(); log( "Sent message to " + clientSocket.remoteAddress + ":" + clientSocket.remotePort ); } else log("No socket connection."); } catch ( error:Error ) { log( error.message ); } } private function log( text:String ):void { logField.appendText( text + "\n" ); logField.scrollV = logField.maxScrollV; trace( text ); } private function setupUI():void { localIP = createTextField( 10, 10, "Local IP", "0.0.0.0"); localPort = createTextField( 10, 35, "Local port", "0" ); createTextButton( 170, 60, "Bind", bind ); message = createTextField( 10, 85, "Message", "Lucy can't drink milk." ); createTextButton( 170, 110, "Send", send ); logField = createTextField( 10, 135, "Log", "", false, 200 ) this.stage.nativeWindow.activate(); } private function createTextField( x:int, y:int, label:String, defaultValue:String = '', editable:Boolean = true, height:int = 20 ):TextField { var labelField:TextField = new TextField(); labelField.text = label; labelField.type = TextFieldType.DYNAMIC; labelField.width = 100; labelField.x = x; labelField.y = y; var input:TextField = new TextField(); input.text = defaultValue; input.type = TextFieldType.INPUT; input.border = editable; input.selectable = editable; input.width = 280; input.height = height; input.x = x + labelField.width; input.y = y; this.addChild( labelField ); this.addChild( input ); return input; } private function createTextButton( x:int, y:int, label:String, clickHandler:Function ):TextField { var button:TextField = new TextField(); button.htmlText = "<u><b>" + label + "</b></u>"; button.type = TextFieldType.DYNAMIC; button.selectable = false; button.width = 180; button.x = x; button.y = y; button.addEventListener( MouseEvent.CLICK, clickHandler ); this.addChild( button ); return button; } } }
Classe ServerSocketConnectEventClasse SocketClasse XMLSocketClasse DatagramSocketconnect Distribué lorsqu’un socket distant tente de se connecter au socket de ce serveur.flash.events.ServerSocketConnectEvent.CONNECTflash.events.ServerSocketConnectEvent Distribué lorsqu’un socket distant tente de se connecter au socket de ce serveur. close Distribué lorsque le système d’exploitation ferme ce socket.flash.events.Event.CLOSEflash.events.Event Distribué lorsque le système d’exploitation ferme ce socket.

L’événement close n’est pas distribué lorsque la méthode close() de l’objet ServerSocket est appelée. Si d’autres objets dans votre application reposent sur l’événement close, vous pouvez distribuer l’événement manuellement avant d’appeler la méthode close().

ServerSocket Crée un objet ServerSocket.Cette erreur se produit si le contenu appelant est exécuté hors du sandbox de sécurité de l’application AIR. SecurityErrorSecurityError Crée un objet ServerSocket. bind Lie ce socket à l’adresse et au port locaux spécifiés.Cette erreur se produit lorsque le paramètre localPort est défini sur une valeur inférieure à 0 ou supérieure à 65535. RangeErrorRangeErrorCette erreur se produit lorsque localAddress n’est pas une adresse IP syntaxiquement correcte. ArgumentErrorArgumentErrorS’il est impossible de lier le socket, notamment lorsque :
  • Le socket réseau sous-jacent (IP et port) est déjà lié par un autre objet ou processus.
  • L’application est exécutée sous un compte utilisateur qui ne dispose pas des privilèges nécessaires pour se lier à ce port. Les problèmes de privilèges se produisent généralement lorsque vous tentez d’effectuer la liaison à des ports connus (localPort < 1024).
  • Cet objet ServerSocket est déjà lié. (Appelez close() avant de procéder à la liaison à un autre socket.)
  • Lorsque localAddress n’est pas une adresse locale valide.
IOErrorflash.errors:IOError
localPortint0Numéro de port auquel se relier sur l’ordinateur local. Si localPort est définie sur 0 (valeur par défaut), le prochain port système disponible est lié. L’autorisation de se connecter à un numéro de port inférieur à 1024 est soumise à la stratégie de protection du système. Sous Mac et Linux, par exemple, l’application doit être exécutée avec des privilèges racines pour se connecter aux ports inférieurs à 1024. localAddressString0.0.0.0Adresse IP sur la machine locale à laquelle se relier. Cette adresse peut être une adresse IPv4 ou une adresse IPv6. Si le paramètre localAddress est défini sur 0.0.0.0 (valeur par défaut), le socket écoute toutes les adresses IPv4 disponibles. Pour écouter toutes les adresses IPv6, vous devez spécifier "::" comme argument de localAddress. Pour utiliser une adresse IPv6, l’ordinateur et le réseau doivent tous deux être configurés de façon à prendre en charge le protocole IPv6. En outre, un socket lié à une adresse IPv4 ne peut pas se connecter à un socket avec une adresse IPv6. De même, un socket lié à une adresse IPv6 ne peut pas se connecter à un socket avec une adresse IPv4. Le type d’adresse doit correspondre.
Lie ce socket à l’adresse et au port locaux spécifiés.
close Ferme le socket et cesse d’écouter les connexions.Cette erreur se produit s’il s’avère impossible de fermer le socket ou si ce dernier n’a pas été ouvert. ErrorError Ferme le socket et cesse d’écouter les connexions.

Vous ne pouvez pas rouvrir les sockets fermés. Créez plutôt une nouvelle occurrence de ServerSocket.

listen Lance l’écoute des connexions TCP entrantes sur l’adresse IP et le port liés.Cette erreur se produit si le socket n’est pas ouvert ou lié. Cette erreur se produit si l’appel à listen() échoue pour toute autre raison. IOErrorflash.errors:IOErrorCette erreur se produit si le paramètre backlog est inférieur à zéro. RangeErrorRangeErrorbacklogint0Longueur maximale de la file d’attente des connexions en attente. Si le paramètre backlog est défini sur 0, la longueur de la file est définie sur la valeur système maximale. Lance l’écoute des connexions TCP entrantes sur l’adresse IP et le port liés.

La méthode listen() est immédiatement renvoyée. Lorsque vous appelez listen(), l’objet ServerSocket distribue un événement connect à chaque tentative de connexion. La propriété socket de l’objet d’événement ServerSocketConnectEvent fait référence à un objet Socket représentant la connexion serveur-client.

Le paramètre backlog indique le nombre de connexions placées en file d’attente pendant que votre application traite les événements connect. Si la file d’attente est pleine, d’autres connexions sont refusées sans qu’un événement connect ne soit distribué. Si la valeur par défaut de zéro est spécifiée, la longueur maximale de la file d’attente définie par le système est utilisée. Cette longueur varie en fonction de la plate-forme et peut être configurée sur chaque poste de travail. Si la valeur spécifiée dépasse la longueur maximale autorisée par le système, la longueur maximale définie par le système est utilisée. Il n’existe aucun moyen de connaître la valeur actuelle du paramètre backlog. (La valeur maximale définie par le système est déterminée par le paramètre SOMAXCONN du sous-système de réseau TCP sur l’ordinateur hôte.)

bound Indique si le socket est lié à une adresse et à un port locaux.Boolean Indique si le socket est lié à une adresse et à un port locaux. bind()isSupported Indique si les fonctions ServerSocket sont prises en charge dans l’environnement d’exécution.Boolean Indique si les fonctions ServerSocket sont prises en charge dans l’environnement d’exécution. listening Indique si le socket du serveur écoute les connexions entrantes.Boolean Indique si le socket du serveur écoute les connexions entrantes. listen()localAddress Adresse IP via laquelle le socket écoute.String Adresse IP via laquelle le socket écoute. bind()localPort Port via lequel le socket écoute.int Port via lequel le socket écoute. bind()
FileFilter La classe FileFilter permet d’indiquer quels fichiers du système utilisateur sont répertoriés dans la boîte de dialogue de recherche de fichiers qui s’affiche lors de l’appel de la méthode FileReference.browse(), de la méthode FileReferenceList.browse(), ou d’une méthode de recherche d’un objet File, FileReference ou FileReferenceList.Object La classe FileFilter permet d’indiquer quels fichiers du système utilisateur sont répertoriés dans la boîte de dialogue de recherche de fichiers qui s’affiche lors de l’appel de la méthode FileReference.browse(), de la méthode FileReferenceList.browse(), ou d’une méthode de recherche d’un objet File, FileReference ou FileReferenceList. Les occurrences de FileFilter sont transmises à la méthode comme une valeur du paramètre facultatif typeFilter. Si vous utilisez une occurrence de FileFilter, les extensions et les types de fichiers qu’elle ne spécifie pas sont omis. En d’autres termes, les utilisateurs ne peuvent pas les sélectionner. Si aucun objet FileFilter n’est transmis à la méthode, tous les fichiers sont répertoriés dans la boîte de dialogue.

Vous pouvez utiliser les occurrences de FileFilter de deux façons :

  • Une description avec les extensions de fichier uniquement.
  • Une description avec les extensions de fichier et les types de fichiers Macintosh.

Ces deux formats ne sont pas interchangeables dans le même appel de la méthode browse. Vous devez utiliser l’un ou l’autre.

Vous pouvez transmettre une ou plusieurs occurrences de FileFilter à la méthode browse, comme dans l’exemple suivant :

var imagesFilter:FileFilter = new FileFilter("Images", "~~.jpg;~~.gif;~~.png"); var docFilter:FileFilter = new FileFilter("Documents", "~~.pdf;~~.doc;~~.txt"); var myFileReference:FileReference = new FileReference(); myFileReference.browse([imagesFilter, docFilter]);

Dans le cas d’une application AIR :

var imagesFilter:FileFilter = new FileFilter("Images", "~~.jpg;~~.gif;~~.png"); var docFilter:FileFilter = new FileFilter("Documents", "~~.pdf;~~.doc;~~.txt"); var myFile:File = new File(); myFile.browseForOpen("Open", [imagesFilter, docFilter]);

La liste des extensions dans la propriété FileFilter.extension est utilisée pour filtrer les fichiers affichés dans la boîte de dialogue de recherche de fichiers. Cette liste n’est pas réellement affichée dans la boîte de dialogue. Pour afficher les types de fichiers aux utilisateurs, vous devez énumérer les types de fichiers dans la chaîne descriptive, ainsi que dans la liste d’extensions. Sous Windows et Linux, la chaîne descriptive est affichée dans la boîte de dialogue (elle n’est pas utilisée sous Macintosh ®). Sous Macintosh, une liste de types de fichier Macintosh est utilisée pour filtrer les fichiers, si vous la fournissez. Si elle n’est pas fournie, la liste d’extensions de fichier est utilisée par défaut.

FileFilter Crée une occurrence de FileFilter.descriptionStringChaîne de description qui s’affiche lorsque les utilisateurs sélectionnent des fichiers à charger. extensionStringListe des extensions indiquant quels formats de fichier s’affichent lorsque les utilisateurs sélectionnent des fichiers à charger. macTypeStringnullListe des types de fichiers Macintosh indiquant ceux qui s’affichent lorsque les utilisateurs sélectionnent des fichiers à charger. Si aucune valeur n’est transmise, ce paramètre est réglé sur null. Crée une occurrence de FileFilter. L’exemple suivant charge une image à partir de votre système de fichiers local sur l’objet d’affichage racine (dans ce cas, la scène). Exemple fourni par André Venancio (disponible en anglais uniquement). var buttonShape:Shape = new Shape(); buttonShape.graphics.beginFill(0x336699); buttonShape.graphics.drawCircle(50, 50, 25); var button = new SimpleButton(buttonShape, buttonShape, buttonShape, buttonShape); addChild(button); var fileRef:FileReference= new FileReference(); button.addEventListener(MouseEvent.CLICK, onButtonClick); function onButtonClick(e:MouseEvent):void { fileRef.browse([new FileFilter("Images", "*.jpg;*.gif;*.png")]); fileRef.addEventListener(Event.SELECT, onFileSelected); } function onFileSelected(e:Event):void { fileRef.addEventListener(Event.COMPLETE, onFileLoaded); fileRef.load(); } function onFileLoaded(e:Event):void { var loader:Loader = new Loader(); loader.loadBytes(e.target.data); addChild(loader); } description Chaîne de description du filtre.String Chaîne de description du filtre. La description apparaît à l’utilisateur dans la boîte de dialogue qui s’affiche lors d’un appel de FileReference.browse() ou FileReferenceList.browse(). Elle contient une chaîne, telle que Images (~~.gif, ~~.jpg, ~~.png), qui indique à l’utilisateur les types de fichiers qu’il peut charger ou télécharger. Sachez que les types de fichiers qui sont pris en charge par cet objet FileReference sont stockés dans la propriété extension. extension Liste d’extensions de fichier.String Liste d’extensions de fichier. Cette liste répertorie les types de fichiers à afficher dans la boîte de dialogue de recherche de fichiers (la liste n’apparaît pas à l’utilisateur, qui voit uniquement la valeur de la propriété description). La propriété extension contient une liste d’extensions de fichier délimitées par des points-virgules et précédées d’un caractère générique (~~), comme suit : ~~.jpg;~~.gif;~~.png. macType Liste de types de fichiers Macintosh.String Liste de types de fichiers Macintosh. Cette liste répertorie les types de fichiers à afficher dans la boîte de dialogue de recherche de fichiers (la liste n’apparaît pas à l’utilisateur, qui voit uniquement la valeur de la propriété description). La propriété macType contient une liste de types de fichiers Macintosh délimités par des points-virgules, comme suit : JPEG;jp2_;GIFF.
URLRequest La classe URLRequest capture toutes les informations dans une même requête HTTP.Object La classe URLRequest capture toutes les informations dans une même requête HTTP. Les objets URLRequest sont transmis aux méthodes load() des classes Loader, URLStream et URLLoader et autres opérations de chargement pour lancer les téléchargements d’URL. Ils sont également transmis aux méthodes upload() et download() de la classe FileReference.

Un fichier SWF du sandbox local avec système de fichiers risque de ne pas charger des données depuis une ressource située dans le sandbox réseau, ni lui en fournir.

Par défaut, le fichier SWF appelant et l’URL chargée doivent se trouver dans le même domaine. Par exemple, un fichier SWF à l’adresse www.adobe.com peut charger uniquement des données provenant de sources situées également à l’adresse www.adobe.com. Pour charger des données à partir d’un autre domaine, placez un fichier de régulation d’URL sur le serveur hébergeant les données.

Néanmoins, dans Adobe AIR, le contenu du sandbox de sécurité de l’application (contenu installé avec l’application AIR) n’est pas soumis à ces restrictions de sécurité. Dans le cas de contenu s’exécutant dans Adobe AIR, les fichiers du sandbox de sécurité de l’application peuvent accéder aux URL à l’aide de l’un des modèles d’URL suivants :

  • http et https
  • file
  • app-storage
  • à partir

Le contenu qui s’exécute dans Adobe AIR et qui n’est pas dans le sandbox de sécurité de l’application observe les mêmes restrictions que le contenu qui s’exécute dans le navigateur (dans Flash Player), et le chargement est régi par le domaine du contenu et par les autorisations accordées dans les fichiers de régulation d’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).

L’exemple suivant crée un nouvel objet Loader et lui transmet un objet URLRequest contenant le chemin vers un fichier XML. Si le chargement réussit, un événement complete est distribué et les données du fichier XML sont écrites dans le résultat. Des gestionnaires d’événement supplémentaires capturent d’autres événements, y compris des événements d’erreur.

Pour exécuter cet exemple, placez un fichier nommé XMLFile.xml dans le même répertoire que votre fichier SWF.

package { import flash.display.Sprite; import flash.events.*; import flash.net.*; public class URLRequestExample extends Sprite { public function URLRequestExample() { var loader:URLLoader = new URLLoader(); configureListeners(loader); var request:URLRequest = new URLRequest("XMLFile.xml"); try { loader.load(request); } catch (error:Error) { trace("Unable to load requested document."); } } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); } private function completeHandler(event:Event):void { var loader:URLLoader = URLLoader(event.target); trace("completeHandler: " + loader.data); } private function openHandler(event:Event):void { trace("openHandler: " + event); } private function progressHandler(event:ProgressEvent):void { trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function httpStatusHandler(event:HTTPStatusEvent):void { trace("httpStatusHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } } }
FileReferenceURLRequestHeaderURLRequestDefaultsURLLoaderURLStreamClasse HTMLLoaderURLRequest Crée un objet URLRequest.urlStringnullURL à demander. Vous pourrez définir l’URL ultérieurement à l’aide de la propriété url. Crée un objet URLRequest. Si System.useCodePage correspond à true, la requête est codée via la page de code système, plutôt que le format Unicode. Si System.useCodePage correspond à false, la requête est codée via le format Unicode, plutôt que la page de code système. L’exemple suivant indique comment ouvrir de nouvelles fenêtres de navigateur à partir de Flash Player à l’aide de la méthode navigateToURL(). Exemple fourni par ActionScriptExamples.com. // Requires // - Button symbol on Stage (or a display object, such as a MovieClip) with instance name "buttonSymbol" // buttonSymbol.addEventListener(MouseEvent.CLICK, buttonSymbol_click); function buttonSymbol_click(evt:MouseEvent):void { var req:URLRequest = new URLRequest("http://www.adobe.com/"); navigateToURL(req, "_blank"); } flash.system.System.useCodePageauthenticate Indique si les requêtes d’authentification doivent être traitées (true) ou non (false) pour cette requête.BooleanL’appelant ne se trouve pas dans le sandbox de sécurité de l’application AIR. SecurityErrorSecurityErrortrue Indique si les requêtes d’authentification doivent être traitées ou non. Indique si les requêtes d’authentification de cette requête doivent être traitées (true) ou non (false). Si la valeur est false, les requêtes d’authentification renvoient une erreur HTTP.

Les méthodes d’authentification prises en charge sont les suivantes :

  • Windows : authentification HTTP de base/Digest, authentification intégrée de Windows (authentifications NTLM et Kerberos comprises), authentification de certificats SSL.
  • Mac : authentification HTTP de base/Digest, NTLM, authentification de certificats SSL.

Remarque : les méthodes FileReference.upload(), FileReference.download() et HTMLLoader.load() ne prennent pas en charge la propriété URLRequest.authenticate.

flash.net.URLRequestDefaults.authenticate
cacheResponse Indique si les données de réponse satisfaisantes doivent être mises en mémoire cache pour cette requête.BooleanL’appelant ne se trouve pas dans le sandbox de sécurité de l’application AIR. SecurityErrorSecurityErrortrue Indique si les données de réponse satisfaisantes doivent être mises en mémoire cache pour cette requête. Lorsque la valeur true est définie, l’application AIR utilise le cache HTTP du système d’exploitation.

Remarque : la méthode HTMLLoader.load() ne prend pas en charge la propriété URLRequest.cacheResponse.

flash.net.URLRequestDefaults.cacheResponse
contentType Type MIME du contenu dans la propriété data.StringType de contenu MIME dans la propriété data. Type MIME du contenu dans la propriété data.

La valeur par défaut est application/x-www-form-urlencoded.

Remarque : les méthodes FileReference.upload(), FileReference.download() et HTMLLoader.load() ne prennent pas en charge la propriété URLRequest.contentType.

Lors de l’envoi d’une requête POST, les valeurs des propriétés contentType et data doivent correctement correspondre. La valeur de la propriété contentType explique aux serveurs comment interpréter la valeur de la propriété data.

  • Si la valeur de la propriété data est un objet URLVariables, la valeur de contentType doit être application/x-www-form-urlencoded.
  • Si la valeur de la propriété data est d’un autre type, la valeur de contentType doit indiquer le type des données POST à envoyer (données binaires ou de chaîne contenues dans la valeur de la propriété data).
  • Pour FileReference.upload(), le Content-Type de la requête est automatiquement défini sur multipart/form-data, et la valeur de la propriété contentType est ignorée.

Dans Flash Player versions 10 et ultérieures, si vous utilisez un Content-Type en plusieurs parties (par exemple « multipart/form-data ») qui contient un chargement (indiqué par un paramètre « filename » dans un en-tête « content-disposition » au sein du corps POST), l’opération POST est soumise aux règles de sécurité appliquées aux chargements :

  • L’opération POST doit être effectuée en réponse à l’action d’un utilisateur, comme un clic de souris ou la pression d’une touche.
  • Si l’opération POST se fait entre plusieurs domaines (la cible POST ne se trouve pas sur le même serveur que le fichier SWF qui envoie la demande POST), le serveur cible doit fournir un fichier de régulation d’URL qui permette l’accès interdomaines.

Par ailleurs, la syntaxe de tous les Content-Type en plusieurs parties doit être correcte (selon la norme RFC2046). Si la syntaxe s’avère incorrecte, l’opération POST est soumise aux règles de sécurité appliquées aux chargements.

data
data Objet contenant des données à transmettre avec la demande d’URL.Object Objet contenant des données à transmettre avec la demande d’URL.

Cette propriété s’utilise en combinaison avec la propriété method. Lorsque la valeur de la propriété method est GET, la valeur de data est ajoutée à la valeur de URLRequest.url, avec une syntaxe de chaîne de requête HTTP. Lorsque la valeur de la propriété method est POST (ou autre que GET), la valeur de data est transmise dans le corps de la requête HTTP.

L’API URLRequest offre une prise en charge POST binaire et gère les variables de code URL, ainsi que les chaînes. Les objets de données peuvent être des objets ByteArray, URLVariables ou String.

L’utilisation des données varie en fonction du type d’objet :

  • Si l’objet est de type ByteArray, les données binaires correspondantes sont utilisées en tant que données POST. GET ne gère pas les données de type ByteArray. En outre, ces données ne sont pas prises en charge par FileReference.upload() et FileReference.download().
  • Si l’objet est de type URLVariables et que la méthode est POST, les variables sont codées au format x-www-form-urlencoded et la chaîne résultante sert de données POST. Un appel de FileReference.upload() constitue une exception : les variables sont incluses en tant que champs distincts dans un envoi multipart/form-data.
  • Si l’objet est de type URLVariables et que la méthode correspond à GET, l’objet définit des variables à envoyer avec l’objet URLRequest.
  • Dans tous les autres cas, l’objet est converti en une chaîne, qui est utilisée comme données POST ou GET.

Les données ne sont pas envoyées tant qu’une méthode, telle que navigateToURL() ou FileReference.upload(), utilise l’objet URLRequest.

Remarque : la valeur de contentType doit correspondre au type de données défini dans la propriété data. Consultez la remarque de la description de la propriété contentType.

L’exemple suivant ouvre l’application distante hébergée à l’adresse http://www.[yourDomain].com/application.jsp dans une nouvelle fenêtre de navigateur et transmet à l’application des données relatives à une session utilisateur, capturées dans un objet URLVariables.

Vous trouverez ci-dessous des extraits de l’exemple :

  1. La fonction constructeur crée une occurrence de URLRequest nommée request, en utilisant l’URL de l’application distante comme paramètre.
  2. Un objet URLVariables est créé et des valeurs sont attribuées à deux de ses propriétés.
  3. L’objet URLVariables est affecté à la propriété data de l’objet URLRequest.
  4. L’exemple appelle navigateToURL, qui ouvre une nouvelle fenêtre de navigateur vers l’URL de l’application distante.

Remarque : pour exécuter l’exemple, l’URL de l’application distante de l’exemple doit être remplacée par une URL opérationnelle. En outre, du code serveur serait nécessaire pour traiter les informations capturées par Flash Player dans l’objet URLVariables.

package { import flash.display.Sprite; import flash.net.navigateToURL; import flash.net.URLRequest; import flash.net.URLVariables; public class URLVariablesExample extends Sprite { public function URLVariablesExample() { var url:String = "http://www.[yourDomain].com/application.jsp"; var request:URLRequest = new URLRequest(url); var variables:URLVariables = new URLVariables(); variables.exampleSessionId = new Date().getTime(); variables.exampleUserLabel = "guest"; request.data = variables; navigateToURL(request); } } }
URLRequest.methodURLRequestMethodURLVariablesflash.utils.ByteArraycontentType
digest Chaîne qui identifie de façon unique le composant de la plateforme Adobe signé devant être enregistré dans (ou extrait de) la mémoire cache de Flash Player.StringLe résumé fourni ne correspond pas à celui du fichier extrait à partir du fichier signé téléchargé ou du fichier signé chargé hors de la mémoire cache. L’application renvoie également cette erreur si le résumé fourni est de longueur incorrecte ou s’il contient des caractères non valides (non hexadécimaux). ArgumentErrorArgumentError Chaîne qui identifie de façon unique le composant de la plateforme Adobe signé devant être enregistré dans (ou extrait de) la mémoire cache de Flash Player. Un composant de la plateforme Adobe est un fichier signé (un fichier SWZ) qui renferme le contenu SWF mis en cache de façon permanente sur l’ordinateur d’un utilisateur. Tous les fichiers SWZ sont signés par Adobe. Un résumé correspond à un seul fichier mis en cache ; si vous modifiez ce fichier de quelque manière que ce soit, son résumé risque de subir des modifications imprévisibles. L’utilisation d’un résumé vous permet de vérifier le fichier mis en cache dans plusieurs domaines. Deux fichiers possédant le même résumé correspondent au même fichier ; ce n’est pas le cas lorsque deux fichiers possèdent des résumés différents. Il est pratiquement impossible de créer un fichier pour « espionner » un résumé et prétendre en être un autre.

Le résumé est basé sur un algorithme Digest sécurisé SHA-256 (64 caractères en notation hexadécimale).

Par exemple, le kit de développement Flex comprend un fichier SWZ pour le cadre d’application Flex (et il fournit la chaîne digest pour ce fichier SWZ). Vous pouvez envoyer ce fichier SWZ au serveur Web et le charger dans votre fichier SWF (à l’aide de la méthode load() d’un objet URLLoader). Si l’ordinateur de l’utilisateur final possède déjà le fichier SWZ mis en cache correspondant, l’application l’utilise (un fichier SWZ « correspond » lorsque son digest correspond à celui que vous avez fourni). Dans le cas contraire, l’application télécharge le fichier SWZ à partir de l’URL que vous avez spécifiée.

Définissez le paramètre digest uniquement dans un objet URLRequest utilisé lors d’un appel de la méthode URLLoader.load() en vue de charger un fichier SWZ. Si la propriété digest d’un objet URLRequest est définie alors qu’elle est utilisée dans d’autres méthodes, l’application émet une exception IOError.

L’exemple suivant charge un fichier distant dans la mémoire cache. Une fois le chargement terminé, le tableau d’octets contient le fichier actuel (et non le fichier signé). L’exemple suivant termine l’opération de chargement en appelant loadBytes() : var myURLReq:URLRequest = new URLRequest(); myURLReq.url = "http://yourdomain/users/jdoe/test01/_rsc/Automated/AssetCaching_rsc/test01/rsl.swz"; myURLReq.digest = "3B0AA28C7A990385E044D80F5637FB036317BB41E044D80F5637FB036317BB41"; var myURLLoader:URLLoader = new URLLoader(); myURLLoader.dataFormat = URLLoaderDataFormat.BINARY; myURLLoader.addEventListener("complete", onC); myURLLoad.load(myURLReq); function onC(e) { var someLoader:Loader = new Loader(); addChild(someLoader); someLoader.loadBytes((ByteArray)(myURLLoad.data)); }
followRedirects Indique si des redirections sont utilisées (true) ou non (false).BooleanL’appelant ne se trouve pas dans le sandbox de sécurité de l’application AIR. SecurityErrorSecurityErrortrue Indique si les redirections doivent être suivies. Indique si des redirections sont utilisées (true) ou non (false).

Remarque : les méthodes FileReference.upload(), FileReference.download() et HTMLLoader.load() ne prennent pas en charge la propriété URLRequest.followRedirects.

URLRequestDefaults.followRedirects
idleTimeout Spécifie la valeur du délai d’inactivité (en millisecondes) pour cette requête.NumberL’appelant ne se trouve pas dans le sandbox de sécurité de l’application AIR. SecurityErrorSecurityErrorinitialized from the URLRequestDefaults.idleTimeout property Spécifie la valeur du délai d’inactivité (en millisecondes) pour cette requête.

Le délai d’inactivité correspond au laps de temps que le client attend une réponse du serveur, une fois la connexion établie et avant l’abandon de la requête.

Remarque : la méthode HTMLLoader.load() ne prend pas en charge la propriété URLRequest.idleTimeout. La classe HTMLLoader définit sa propre propriété idleTimeout.

URLRequestDefaults.idleTimeout
manageCookies Indique si la pile de protocole HTTP doit gérer les cookies pour cette requête. BooleanL’appelant ne se trouve pas dans le sandbox de sécurité de l’application AIR. SecurityErrorSecurityErrortrue Indique si la pile de protocole HTTP doit gérer les cookies pour cette requête. Lorsque la valeur true est définie, les cookies sont ajoutés à la requête et les cookies de réponse sont pris en compte. Si la valeur false est définie, les cookies ne sont pas ajoutés à la requête et les cookies de réponse ne sont pas pris en compte ; toutefois, les utilisateurs peuvent gérer eux-mêmes les cookies en manipulant directement l’en-tête. Remarque : sous Windows, il n’est pas possible d’ajouter manuellement des cookies à une requête d’URL lorsque manageCookies est définie sur true. Sur d’autres systèmes d’exploitation, l’ajout de cookies à une requête est autorisée, que manageCookies soit définie sur true ou sur false. Lorsque vous y êtes autorisé, vous pouvez ajouter manuellement des cookies à une requête en ajoutant un objet URLRequestHeader contenant les données de cookie au tableau requestHeaders.

Sous Mac OS, les cookies sont partagés avec Safari. Pour supprimer les cookies sous Mac OS :

  1. Ouvrez Safari.
  2. Choisissez Safari > Préférences, puis cliquez sur le panneau Sécurité.
  3. Cliquez sur le bouton Afficher les cookies.
  4. Cliquez sur le bouton Tout supprimer.

Pour supprimer les cookies sous Windows :

  1. Dans la boîte de dialogue Propriétés Internet, cliquez sur l’onglet Général.
  2. Cliquez sur le bouton Supprimer les cookies.
flash.net.URLRequestDefaults.manageCookies
method Spécifie la méthode de soumission du formulaire HTTP.StringSi le paramètre value n’est pas URLRequestMethod.GET ou URLRequestMethod.POST. ArgumentErrorArgumentErrorURLRequestMethod.GET Spécifie la méthode de soumission du formulaire HTTP.

Dans le cas de contenu SWF s’exécutant dans Flash Player (dans le navigateur), cette propriété est limitée à des opérations GET ou POST, et les valeurs valides sont URLRequestMethod.GET ou URLRequestMethod.POST.

Dans le cas de contenu s’exécutant dans Adobe AIR, vous pouvez utiliser n’importe quelle valeur de chaîne si le contenu se trouve dans le sandbox de sécurité de l’application. Dans le cas contraire, comme dans le cas de contenu s’exécutant dans Flash Player, vous êtes limité aux opérations GET ou POST.

Pour le contenu s’exécutant dans Adobe AIR, lors de l’utilisation de la fonction navigateToURL(), le moteur d’exécution traite un objet URLRequest qui utilise la méthode POST (objet dont la propriété method est définie sur URLRequestMethod.POST) comme s’il utilisait la méthode GET.

Remarque : dans le cas d’une exécution dans Flash Player et si la forme référencée n’a pas de corps, Flash Player utilise automatiquement une opération GET, même si la méthode est définie sur URLRequestMethod.POST. Il est donc conseillé de toujours inclure un corps factice pour être certain que la méthode correcte soit utilisée.

L’exemple suivant ouvre l’application distante hébergée à l’adresse http://www.[yourDomain].com/application.jsp dans une nouvelle fenêtre de navigateur et transmet à l’application des données relatives à une session utilisateur, capturées dans un objet URLVariables. Il définit explicitement la valeur de la propriété URLRequest.method sur URLRequestMethod.POST.

Vous trouverez ci-dessous des extraits de l’exemple :

  1. La fonction constructeur crée une occurrence de URLRequest nommée request, en utilisant l’URL de l’application distante comme paramètre.
  2. Un objet URLVariables est créé et des valeurs sont attribuées à deux de ses propriétés.
  3. L’objet URLVariables est affecté à la propriété data de l’objet URLRequest.
  4. La valeur de la propriété URLRequest.method est définie sur URLRequestMethod.POST.
  5. L’exemple appelle navigateToURL, qui ouvre une nouvelle fenêtre de navigateur vers l’URL de l’application distante.

Remarque : pour exécuter l’exemple, l’URL de l’application distante de l’exemple doit être remplacée par une URL opérationnelle. En outre, du code serveur serait nécessaire pour traiter les informations capturées par Flash Player dans l’objet URLVariables.

package { import flash.display.Sprite; import flash.net.navigateToURL; import flash.net.URLRequest; import flash.net.URLRequestMethod; import flash.net.URLVariables; public class URLRequest_method extends Sprite { public function URLRequest_method() { var url:String = "http://www.[yourDomain].com/application.jsp"; var request:URLRequest = new URLRequest(url); var variables:URLVariables = new URLVariables(); variables.exampleSessionId = new Date().getTime(); variables.exampleUserLabel = "guest"; request.data = variables; request.method = URLRequestMethod.POST; navigateToURL(request); } } }
Classe URLRequestMethod
requestHeaders Tableau d’en-tête de requête HTTP à ajouter à la fin de la requête HTTP.Array Tableau d’en-tête de requête HTTP à ajouter à la fin de la requête HTTP. Le tableau se compose d’objets URLRequestHeader. Tous les objets du tableau doivent être de type URLRequestHeader et contenir une chaîne de nom et une chaîne de valeur, comme suit : var rhArray:Array = new Array(new URLRequestHeader("Content-Type", "text/html"));

Flash Player et le moteur d’exécution AIR imposent certaines restrictions sur les en-têtes de requête. Pour plus d’informations, consultez la description de la classe URLRequestHeader.

Toutes les méthodes qui acceptent des paramètres URLRequest ne prennent pas en charge la propriété requestHeaders ; consultez la documentation de la méthode que vous appelez. Par exemple, les méthodes FileReference.upload() et FileReference.download() ne prennent pas en charge la propriété URLRequest.requestHeaders.

Du fait des limites des navigateurs, les en-têtes de requête HTTP personnalisées ne sont prises en charge que pour les requêtes POST, pas pour les requêtes GET.

URLRequestHeader
url URL à demander.String URL à demander.

Veillez à coder tous les caractères définis comme non fiables dans le document Uniform Resource Locator (http://www.faqs.org/rfcs/rfc1738.html) ou ceux réservés dans le modèle URL de l’objet URLRequest (s’ils ne sont pas utilisés comme caractères réservés). Utilisez "%25" comme symbole du pourcentage (%) et "%23" comme signe numérique (#), comme dans l’exemple suivant : "http://www.example.com/orderForm.cfm?item=%23B-3&discount=50%25".

Par défaut, l’URL doit être dans le même domaine que le fichier appelant, sauf si le contenu s’exécute dans le sandbox de sécurité de l’application Adobe AIR. Pour charger des données à partir d’un autre domaine, placez un fichier de régulation d’URL dans le serveur qui héberge les données. Pour plus d’informations, voir la description de la classe URLRequest.

Dans le cas de contenu s’exécutant dans Adobe AIR, les fichiers du sandbox de sécurité de l’application, à savoir les fichiers installés avec l’application AIR, peuvent accéder aux URL à l’aide de l’un des modèles d’URL suivants :

  • http et https
  • file
  • app-storage
  • à partir

Remarque : IPv6 (Internet Protocol version 6) est pris en charge dans AIR et dans Flash Player 9.0.115.0 et versions ultérieures. IPv6 est une version du protocole IP (Internet Protocol) qui prend en charge les adresses 128 bits (amélioration du protocole IPv4 précédent qui prend en charge les adresses 32 bits). Vous devrez peut-être activer IPv6 sur vos interfaces de mise en réseau. Pour plus d’informations, voir l’Aide du système d’exploitation hébergeant les données. Si IPv6 est pris en charge sur le système hébergeant, vous pouvez spécifier des adresses littérales IPv6 numériques dans les URL entre crochets ([]), comme suit :

     rtmp://[2001:db8:ccc3:ffff:0:444d:555e:666f]:1935/test
     
L’exemple suivant indique comment charger une image de façon dynamique à l’aide de la classe Loader dans ActionScript 3.0. Exemple fourni par ActionScriptExamples.com. var url:String = "http://www.helpexamples.com/flash/images/image2.jpg"; var urlRequest:URLRequest = new URLRequest(url); var loader:Loader = new Loader(); loader.load(urlRequest); addChild(loader);
useCache Indique si le cache local doit être consulté avant que URLRequest récupère les données.BooleanL’appelant ne se trouve pas dans le sandbox de sécurité de l’application AIR. SecurityErrorSecurityErrortrue Indique si le cache local doit être consulté avant que URLRequest récupère les données.

Remarque : la méthode HTMLLoader.load() ne prend pas en charge la propriété URLRequest.useCache.

flash.net.URLRequestDefaults.useCache
userAgent Indique la chaîne agent utilisateur à utiliser dans la requête HTTP.StringL’appelant ne se trouve pas dans le sandbox de sécurité de l’application AIR. SecurityErrorSecurityError Indique la chaîne agent utilisateur à utiliser dans la requête HTTP.

La valeur par défaut correspond à la même chaîne agent utilisateur utilisée par Flash Player, différente dans Mac, Linux et Windows.

Remarque : cette propriété n’a pas d’incidence sur la chaîne agent utilisateur lors de l’utilisation de l’objet URLRequest avec la méthode load() d’un objet HTMLLoader. Pour définir la chaîne userAgent d’un objet HTMLLoader, définissez la propriété userAgent de l’objet HTMLLoader ou la propriété statique URLRequestDefaults.userAgent.

flash.net.URLRequestDefaults.userAgentflash.html.HTMLLoader.userAgent
InterfaceAddress La classe InterfaceAddress indique les propriétés d’une adresse d’interface de réseau.Object La classe InterfaceAddress indique les propriétés d’une adresse d’interface de réseau. Classe NetworkInfoClasse NetworkInterfaceaddress Adresse du protocole Internet (IP).String Adresse du protocole Internet (IP). broadcast Adresse de diffusion du segment de réseau local.String Adresse de diffusion du segment de réseau local. ipVersion Type d’adresse IP (IPv4 ou IPv6).String Type d’adresse IP (IPv4 ou IPv6). prefixLength Longueur du préfixe de cette adresse.int Longueur du préfixe de cette adresse.

Pour les adresses IPv4, il s’agit du masque de sous-réseau. Exemples de la longueur du préfixe pour les valeurs IPv4 : 8 (255.0.0.0), 16 (255.255.0.0) et 24 (255.255.255.0). Exemples des valeurs de longueur du préfixe IPv6 : 128 (::1/128) et 32 (2001:db8::/32),

Remarque : si la longueur du préfixe de cette adresse n’est pas disponible, la valeur de prefixLength est -1. Une valeur de préfixe n’est pas toujours renvoyée par l’implémentation réseau d’un ordinateur client spécifique.

GroupSpecifier La classe GroupSpecifier permet de construire les chaînes opaques groupspec pouvant être transmises aux constructeurs NetStream et NetGroup.Construit les chaînes opaques groupspec transmises aux constructeurs NetStream et NetGroup. Object La classe GroupSpecifier permet de construire les chaînes opaques groupspec pouvant être transmises aux constructeurs NetStream et NetGroup. Un groupspec spécifie un groupe RTMFP homologue à homologue, y compris les fonctionnalités, restrictions et autorisations du membre qui utilise ce groupspec.

Par défaut, toutes les fonctionnalités sont désactivées et les connexions homologue à homologue sont autorisées.

flash.net.NetGroupflash.net.NetStreamGroupSpecifier Crée un nouvel objet GroupSpecifier.si name est vide ou null. ArgumentErrorArgumentErrornameStringNom du groupe sur lequel tous les membres doivent se mettre d’accord. Crée un nouvel objet GroupSpecifier. Par défaut, toutes les fonctionnalités sont désactivées et les connexions homologue à homologue sont autorisées. flash.net.NetGroupflash.net.NetStreamaddBootstrapPeer Force l’objet NetStream ou NetGroup associé à effectuer une connexion voisine initiale à l’ID homologue spécifié.peerIDStringID homologue auquel une connexion voisine initiale doit être effectuée pour amorcer le maillage homologue à homologue. Force l’objet NetStream ou NetGroup associé à effectuer une connexion voisine initiale à l’ID homologue spécifié. encodeBootstrapPeerIDSpec()flash.net.NetGroup.addMemberHint()flash.net.NetGroup.addNeighbor()addIPMulticastAddress Force l’objet NetStream ou NetGroup associé à se joindre au groupe de multidiffusion IP spécifié et à écouter le port UDP spécifié.addressStringChaîne spécifiant l’adresse du groupe de multidiffusion IPv4 ou IPv6 auquel se joindre, éventuellement suivie du signe deux points (":") et du numéro de port UDP. Si vous spécifiez une adresse IPv6 et un port, l’adresse IPv6 doit être entre crochets. Exemples : "224.0.0.254", "224.0.0.254:30000", "ff03::ffff", "[ff03::ffff]:30000". portnullPort UDP sur lequel recevoir les datagrammes de multidiffusion IP. Si port est défini sur null, le port UDP doit être spécifié dans l’adresse. S’il n’est pas défini sur null, le port UDP ne doit pas être spécifié dans l’adresse. sourceStringnullS’il n’est pas défini sur null, chaîne spécifiant l’adresse IP source d’une multidiffusion propre à la source (SSM). Force l’objet NetStream ou NetGroup associé à se joindre au groupe de multidiffusion IP spécifié et à écouter le port UDP spécifié. encodeIPMulticastAddressSpec()ipMulticastMemberUpdatesEnabledauthorizations Renvoie une chaîne qui représente les mots de passe pour la publication en multidiffusion IP et pour la publication.String Renvoie une chaîne qui représente les mots de passe pour la publication en multidiffusion IP et pour la publication. Ajoute la chaîne à un groupspec non autorisé pour activer les fonctionnalités pour lesquelles le mot de passe a été défini. encodePostingAuthorization()encodePublishAuthorization()groupspecWithAuthorizations()groupspecWithoutAuthorizations()setPostingPassword()setPublishPassword()encodeBootstrapPeerIDSpec Code et renvoie une chaîne qui représente un ID homologue de démarrage.StringpeerIDStringID homologue auquel une connexion voisine initiale doit être effectuée pour amorcer le maillage homologue à homologue. Code et renvoie une chaîne qui représente un ID homologue de démarrage. Si vous ajoutez la chaîne à un groupspec, l’objet NetStream ou NetGroup associé effectue une connexion de voisin initiale sur l’ID homologue spécifié. addBootstrapPeer()flash.net.NetGroup.addMemberHint()flash.net.NetGroup.addNeighbor()encodeIPMulticastAddressSpec Code et renvoie une chaîne qui représente une adresse de socket de multidiffusion IP.StringaddressStringChaîne spécifiant l’adresse du groupe de multidiffusion IPv4 ou IPv6 auquel se joindre, éventuellement suivie du signe deux points (":") et du numéro de port UDP. Si vous spécifiez une adresse IPv6 et un port, l’adresse IPv6 doit être entre crochets. Exemples : "224.0.0.254", "224.0.0.254:30000", "ff03::ffff", "[ff03::ffff]:30000". portnullPort UDP sur lequel recevoir les datagrammes de multidiffusion IP. Si port est défini sur null, le port UDP doit être spécifié dans l’adresse. S’il n’est pas défini sur null, le port UDP ne doit pas être spécifié dans l’adresse. sourceStringnullS’il n’est pas défini sur null, chaîne spécifiant l’adresse IP source d’une multidiffusion propre à la source (SSM). Code et renvoie une chaîne qui représente une adresse de socket de multidiffusion IP. Si vous ajoutez la chaîne à un groupspec, l’objet NetStream ou NetGroup associé joint le groupe de multidiffusion IP spécifié et écoute le port UDP spécifié. addIPMulticastAddress()ipMulticastMemberUpdatesEnabledencodePostingAuthorization Code et renvoie une chaîne qui représente un mot de passe de publication.StringpasswordStringMot de passe à coder, qui doit correspondre au mot de passe de publication (s’il a été défini) pour activer NetGroup.post(). Code et renvoie une chaîne qui représente un mot de passe de publication. Lorsque la publication est protégée par mot de passe, vous pouvez concaténer la chaîne à un groupspec pour activer la publication. groupspecWithoutAuthorizations()setPostingPassword()flash.net.NetGroup.post()encodePublishAuthorization Code et renvoie une chaîne qui représente le mot de passe d’une publication en multidiffusion.StringpasswordStringMot de passe à coder, qui doit correspondre au mot de passe de publication (s’il a été défini) pour activer NetStream.publish(). Code et renvoie une chaîne qui représente le mot de passe d’une publication en multidiffusion. Lorsque la publication en multidiffusion est protégée par mot de passe, vous pouvez concaténer la chaîne à un groupspec pour activer la publication. groupspecWithoutAuthorizations()setPublishPassword()flash.net.NetStream.publish()groupspecWithAuthorizations Renvoie la chaîne opaque groupspec (y compris les autorisations) pouvant être transmise aux constructeurs NetStream et NetGroup.String Renvoie la chaîne opaque groupspec (y compris les autorisations) pouvant être transmise aux constructeurs NetStream et NetGroup. authorizations()groupspecWithoutAuthorizations()setPostingPassword()setPublishPassword()toString()groupspecWithoutAuthorizations Renvoie la chaîne opaque groupspec (sans les autorisations) pouvant être transmise aux constructeurs NetStream et NetGroup.StringRenvoie la chaîne opaque groupspec (sans les autorisations) pouvant être transmise aux constructeurs NetStream et NetGroup. Renvoie la chaîne opaque groupspec (sans les autorisations) pouvant être transmise aux constructeurs NetStream et NetGroup. authorizations()encodePostingAuthorization()encodePublishAuthorization()groupspecWithAuthorizations()makeUnique Ajoute une balise pseudo-aléatoire forte au spécificateur de groupe pour le rendre unique.Ajoute une balise pseudo-aléatoire forte au spécificateur de groupe pour le rendre unique. Ajoute une balise pseudo-aléatoire forte au groupspec pour le rendre unique. La chaîne opaque groupspec doit être transmise littéralement à d’autres membres potentiels du groupe susceptibles de se joindre correctement. setPostingPassword Indique si un mot de passe est requis pour publier dans l’objet NetGroup.passwordStringnullMot de passe devant être attribué pour utiliser NetGroup.post(). Si la valeur null est définie, aucun mot de passe n’est requis pour la publication. saltStringnullModifie le hachage du mot de passe pour qu’il soit plus difficile à deviner. Pour plus de sécurité, ce paramètre doit être défini sur une valeur aléatoire. Indique si un mot de passe est requis pour publier dans l’objet NetGroup. encodePostingAuthorization()groupspecWithAuthorizations()groupspecWithoutAuthorizations()flash.net.NetGroup.post()setPublishPassword Indique si un mot de passe est requis pour publier un flux de multidiffusion dans l’objet NetStream.passwordStringnullMot de passe devant être attribué pour utiliser NetStream.publish(). Si la valeur null est définie, aucun mot de passe n’est requis pour la publication. saltStringnullModifie le hachage du mot de passe pour qu’il soit plus difficile à deviner. Pour plus de sécurité, ce paramètre doit être défini sur une valeur aléatoire. Indique si un mot de passe est requis pour publier un flux de multidiffusion dans l’objet NetStream. encodePublishAuthorization()groupspecWithAuthorizations()groupspecWithoutAuthorizations()flash.net.NetStream.publish()toString Identique à la méthode WithAuthorizations() du spécificateur de groupe.StringIdentique à la méthode WithAuthorizations() du spécificateur de groupe. Identique à la groupspecWithAuthorizations() méthode. Méthode adéquate pour renvoyer la chaîne opaque groupspec (y compris les autorisations) pouvant être transmise aux constructeurs NetStream et NetGroup. groupspecWithAuthorizations()ipMulticastMemberUpdatesEnabled Indique si les informations concernant l’adhésion au groupe peuvent être échangées sur des sockets de multidiffusion IP.Boolean Indique si les informations concernant l’adhésion au groupe peuvent être échangées sur des sockets de multidiffusion IP. Les serveurs de multidiffusion IP peuvent envoyer des mises à jour d’adhésion au groupe afin de favoriser l’amorçage des maillages P2P ou de réparer les partitions. Les homologues peuvent envoyer des mises à jour d’adhésion sur le réseau local pour favoriser l’amorçage des maillages P2P et pour informer les voisins de réseau local appartenant à des maillages globaux de l’existence d’autres voisins de réseau local. Ces mises à jour peuvent améliorer les performances P2P. addIPMulticastAddress()peerToPeerDisabledmulticastEnabled Indique si la diffusion en continu est activée pour l’objet NetGroup.Boolean Indique si la diffusion en continu est activée pour l’objet NetGroup. Les méthodes utilisées pour la diffusion en continu sont les suivantes : NetStream.publish(), NetStream.play() et NetStream.play2(). Par défaut, cette propriété est définie sur FALSE (la diffusion en continu est désactivée). setPublishPassword()flash.net.NetStream.play()flash.net.NetStream.play2()flash.net.NetStream.publish()objectReplicationEnabled Indique si la réplication d’objets est activée pour l’objet NetGroup. Boolean Indique si la réplication d’objets est activée pour l’objet NetGroup. Par défaut, cette propriété est définie sur FALSE (la réplication d’objets est désactivée). flash.net.NetGroup.addHaveObjects()flash.net.NetGroup.addWantObjects()flash.net.NetGroup.denyRequestedObject()flash.net.NetGroup.removeHaveObjects()flash.net.NetGroup.removeWantObjects()flash.net.NetGroup.writeRequestedObject()peerToPeerDisabled Indique si les connexions homologue à homologue sont activées pour l’objet NetGroup ou NetStream. Boolean Indique si les connexions homologue à homologue sont activées pour l’objet NetGroup ou NetStream. Par défaut, cette propriété est définie sur FALSE (les connexions P2P sont activées).

Si connexions P2P sont désactivées (vous pouvez définir cette propriété sur TRUE), la boîte de dialogue d’avertissement P2P est masquée. Dans ce cas, aucune connexion de voisin ne peut être établie et aucun membre du groupe ne peut utiliser la bande passante en amont. Il n’est généralement utile de désactiver les connexions P2P de cette manière que lors de la réception de flux multidiffusion via une multidiffusion IP pure.

postingEnabled Indique si la publication est activée pour l’objet NetGroup.Boolean Indique si la publication est activée pour l’objet NetGroup. Par défaut, cette propriété est définie sur FALSE (la publication est désactivée). flash.net.NetGroup.post()routingEnabled Indique si les méthodes de routage direct sont activées pour l’objet NetGroup. Boolean Indique si les méthodes de routage direct sont activées pour l’objet NetGroup. Par défaut, cette propriété est définie sur FALSE (les méthodes de routage direct sont désactivées). flash.net.NetGroup.sendToNearest()serverChannelEnabled Indique si les membres du groupe réseau peuvent ouvrir un canal vers le serveur.Boolean Indique si les membres du groupe réseau peuvent ouvrir un canal vers le serveur. Par défaut, cette propriété est définie sur FALSE.

Il est nécessaire d’ouvrir un canal vers le serveur avant que le serveur puisse fournir des fonctions de prise en charge aux membres du groupe. Selon la configuration du serveur, les fonctions de prise en charge peuvent (ou non) être fournies sur ce canal.

LocalConnection La classe LocalConnection vous permet de créer un objet LocalConnection capable d’invoquer une méthode dans un autre objet LocalConnection.flash.events:EventDispatcher La classe LocalConnection vous permet de créer un objet LocalConnection capable d’invoquer une méthode dans un autre objet LocalConnection. La communication peut avoir lieu :
  • au sein d’un fichier SWF unique ;
  • entre plusieurs fichiers SWF ;
  • entre le contenu (de type SWF ou HTML) des applications AIR ;
  • entre le contenu (de type SWF ou HTML) d’une application AIR et le contenu SWF s’exécutant dans un navigateur.

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

Remarque : les périphériques AIR pour TV prennent en charge la communication uniquement entre le contenu basé sur SWF dans les applications AIR.

Les connexions locales autorisent ce type de communication entre les fichiers SWF sans passer par fscommand() ni JavaScript. Les objets LocalConnection ne peuvent communiquer qu’avec les fichiers s’exécutant sur un même ordinateur client, mais peuvent s’exécuter dans diverses applications ; un fichier s’exécutant dans un navigateur et un autre dans Adobe AIR, par exemple.

Les objets LocalConnection créés dans ActionScript 3.0 peuvent communiquer avec les objets LocalConnection créés dans ActionScript 1.0 ou 2.0. L’inverse est également vrai : les objets LocalConnection créés dans ActionScript 1.0 ou 2.0 peuvent communiquer avec les objets LocalConnection créés dans ActionScript 3.0. Flash Player gère automatiquement les communications entre les objets LocalConnection de versions différentes.

Il existe trois façons d’ajouter des méthodes de rappel à un objet LocaConnection :

  • Créer des sous-classes de LocalConnection et ajouter des méthodes
  • Définir la propriété LocalConnection.client sur un objet qui implémente ces méthodes
  • Créer une classe dynamique qui étend la classe LocalConnection et y joindre dynamiquement des méthodes

Pour comprendre comment utiliser les objets LocalConnection afin de permettre les communications entre deux fichiers, il est utile d’identifier les commandes utilisées dans chaque fichier. L’un des fichiers est appelé fichier de réception. Il contient la méthode à appeler. Le fichier de réception doit contenir un objet LocalConnection et un appel de la méthode connect(). L’autre fichier est dit d’envoi. Il s’agit de celui qui appelle la méthode. Le fichier d’envoi doit contenir un autre objet LocalConnection et un appel de la méthode send().

L’utilisation des méthodes send() et connect() varie selon que les fichiers se trouvent dans un même domaine, dans des domaines différents avec des noms prévisibles, ou dans des domaines différents avec des noms imprévisibles ou dynamiques. Les paragraphes ci-après décrivent ces trois situations et présentent des exemples de code pour chacune d’elles.

Même domaine. La manière la plus simple d’utiliser un objet LocalConnection est d’autoriser la communication uniquement entre les objets LocalConnection appartenant au même domaine, car les communications intra-domaine sont autorisées par défaut. Lorsque deux fichiers d’un même domaine communiquent, vous n’avez pas besoin d’implémenter des mesures de sécurité particulières. Vous transmettez simplement la même valeur pour le paramètre connectionName aux deux méthodes connect() et send() :

// receivingLC is in http://www.domain.com/receiving.swf receivingLC.connect('myConnection'); // sendingLC is in http://www.domain.com/sending.swf // myMethod() is defined in sending.swf sendingLC.send('myConnection', 'myMethod');

Domaines différents avec des noms prévisibles. Lorsque deux fichiers SWF de domaines différents communiquent, vous devez autoriser les échanges entre ces derniers en appelant la méthode allowDomain(). Vous devez aussi qualifier le nom de la connexion dans la méthode send() à l’aide du nom du domaine de l’objet LocalConnection de réception :

// receivingLC is in http://www.domain.com/receiving.swf receivingLC.allowDomain('www.anotherdomain.com'); receivingLC.connect('myConnection'); // sendingLC is in http://www.anotherdomain.com/sending.swf sendingLC.send('www.domain.com:myConnection', 'myMethod');

Domaines différents avec des noms imprévisibles. Il se peut que vous souhaitiez accroître la portabilité interdomaines du fichier contenant l’objet LocalConnection de réception. Pour éviter de spécifier le nom de domaine dans la méthode send() tout en indiquant que les objets LocalConnection d’envoi et de réception ne se trouvent pas dans le même domaine, faites précéder le nom de connexion d’un caractère de soulignement (_) dans les appels de connect() et send(). Pour autoriser les échanges entre les deux domaines, appelez la méthode allowDomain() et transmettez les domaines à partir desquels vous voulez autoriser les appels LocalConnection. Vous pouvez aussi transmettre l’argument générique (~~) pour autoriser les appels en provenance de tous les domaines :

// receivingLC is in http://www.domain.com/receiving.swf receivingLC.allowDomain('~~'); receivingLC.connect('_myConnection'); // sendingLC is in http://www.anotherdomain.com/sending.swf sendingLC.send('_myConnection', 'myMethod');

De Flash Player à une application AIR. Un objet LocalConnection créé dans le sandbox de l’application AIR utilise une chaîne spéciale comme préfixe de connexion au lieu d’un nom de domaine. Cette chaîne à la forme suivante : app#appID.pubID, où appID correspond à l’ID d’application et pubID à l’ID d’éditeur de l’application. (Incluez l’ID de l’éditeur uniquement si l’application AIR en utilise un.) Par exemple, si une application AIR possède un ID d’application « com.example » mais pas d’ID d’éditeur, vous pouvez utiliserapp#com.example:myConnection comme chaîne de connexion locale. L’application AIR doit également appeler la méthode allowDomain() en transmettant le domaine d’origine du fichier SWF appelant :

// receivingLC is an AIR application with app ID = com.example (and no publisher ID) receivingLC.allowDomain('www.domain.com'); receivingLC.connect('myConnection'); // sendingLC is in http://www.domain.com/sending.swf sendingLC.send('app#com.example:myConnection', 'myMethod');

Remarque : si une application AIR charge un fichier SWF en dehors du sandbox de l’application AIR, les règles permettant d’établir une connexion locale avec ce fichier SWF sont les mêmes que les règles permettant d’établir une connexion locale avec un fichier SWF s’exécutant dans Flash Player.

D’une application AIR à Flash Player. Lorsqu’une application AIR communique avec un fichier SWF s’exécutant dans le moteur d’exécution de Flash Player, vous devez autoriser la communication entre les deux en appelant la méthode allowDomain() et en transmettant le préfixe de connexion de l’application AIR. Par exemple, si une application AIR a un ID d’application « com.example » et aucun ID d’éditeur, vous pouvez transmettre la chaîne app#com.example à la méthode allowDomain(). Vous devez par ailleurs qualifier le nom de la connexion dans la méthode send() avec le nom du domaine de l’objet LocalConnection récepteur (utilisez « localhost » comme domaine pour les fichiers SWF chargés à partir du système de fichiers local) :

// receivingLC is in http://www.domain.com/receiving.swf receivingLC.allowDomain('app#com.example'); receivingLC.connect('myConnection'); // sendingLC is an AIR application with app ID = com.example (and no publisher ID) sendingLC.send('www.domain.com:myConnection', 'myMethod');

D’une application AIR à une autre application AIR. Pour communiquer entre deux applications AIR, vous devez autoriser la communication entre les deux en appelant la méthode allowDomain() et en transmettant le préfixe de connexion de l’application AIR émettrice. Par exemple, si l’application émettrice possède un ID d’application « com.example » mais pas d’ID d’éditeur, vous pouvez transmettre la chaîne app#com.example à la méthode allowDomain() de l’application réceptrice. Vous devez par ailleurs qualifier le nom de la connexion dans la méthode send() à l’aide du préfixe de connexion de l’objet LocalConnection récepteur :

// receivingLC is an AIR application with app ID = com.sample (and no publisher ID) receivingLC.allowDomain('app#com.example'); receivingLC.connect('myConnection'); // sendingLC is an AIR application with app ID = com.example (and no publisher ID) sendingLC.send('app#com.sample:myConnection', 'myMethod');

Vous pouvez utiliser les objets LocalConnection pour envoyer et recevoir des données au sein d’un même fichier, mais ce n’est pas l’implémentation la plus répandue.

Pour plus d’informations sur les méthodes send() et connect(), voir description du paramètre connectionName dans les entrées de LocalConnection.send() et LocalConnection.connect(). Voir également les entrées de allowDomain() et domain.

Cet exemple comprend deux classes ActionScript qui doivent être compilées dans deux fichiers SWF distincts :

Une occurrence de LocalConnection est créée dans le fichier SWF LocalConnectionSenderExample. Lorsque l’utilisateur appuie sur le bouton, la méthode call() est utilisée pour appeler la méthode lcHandler dans le fichier SWF contenant le nom de connexion « myConnection » et le contenu de TextField est transmis en tant que paramètre.

Une occurrence de LocalConnection est créée dans le fichier SWF LocalConnectionReceiverExample et la méthodeconnect() est appelée pour désigner ce fichier SWF comme destinataire des messages adressés à la connexion « myConnection ». En outre, cette classe comprend une méthode publique intitulée lcHandler(). Il s’agit de la méthode appelée par le fichier SWF LocalConnectionSenderExample. Lorsqu’elle est appelée, le texte reçu en tant que paramètre est ajouté à TextField sur la scène.

Remarque : pour tester l’exemple, chargez les deux fichiers SWF simultanément sur le même ordinateur.

// Code in LocalConnectionSenderExample.as package { import flash.display.Sprite; import flash.events.MouseEvent; import flash.net.LocalConnection; import flash.text.TextField; import flash.text.TextFieldType; import flash.events.StatusEvent; import flash.text.TextFieldAutoSize; public class LocalConnectionSenderExample extends Sprite { private var conn:LocalConnection; // UI elements private var messageLabel:TextField; private var message:TextField; private var sendBtn:Sprite; public function LocalConnectionSenderExample() { buildUI(); sendBtn.addEventListener(MouseEvent.CLICK, sendMessage); conn = new LocalConnection(); conn.addEventListener(StatusEvent.STATUS, onStatus); } private function sendMessage(event:MouseEvent):void { conn.send("myConnection", "lcHandler", message.text); } private function onStatus(event:StatusEvent):void { switch (event.level) { case "status": trace("LocalConnection.send() succeeded"); break; case "error": trace("LocalConnection.send() failed"); break; } } private function buildUI():void { const hPadding:uint = 5; // messageLabel messageLabel = new TextField(); messageLabel.x = 10; messageLabel.y = 10; messageLabel.text = "Text to send:"; messageLabel.autoSize = TextFieldAutoSize.LEFT; addChild(messageLabel); // message message = new TextField(); message.x = messageLabel.x + messageLabel.width + hPadding; message.y = 10; message.width = 120; message.height = 20; message.background = true; message.border = true; message.type = TextFieldType.INPUT; addChild(message); // sendBtn sendBtn = new Sprite(); sendBtn.x = message.x + message.width + hPadding; sendBtn.y = 10; var sendLbl:TextField = new TextField(); sendLbl.x = 1 + hPadding; sendLbl.y = 1; sendLbl.selectable = false; sendLbl.autoSize = TextFieldAutoSize.LEFT; sendLbl.text = "Send"; sendBtn.addChild(sendLbl); sendBtn.graphics.lineStyle(1); sendBtn.graphics.beginFill(0xcccccc); sendBtn.graphics.drawRoundRect(0, 0, (sendLbl.width + 2 + hPadding + hPadding), (sendLbl.height + 2), 5, 5); sendBtn.graphics.endFill(); addChild(sendBtn); } } }
// Code in LocalConnectionReceiverExample.as package { import flash.display.Sprite; import flash.net.LocalConnection; import flash.text.TextField; public class LocalConnectionReceiverExample extends Sprite { private var conn:LocalConnection; private var output:TextField; public function LocalConnectionReceiverExample() { buildUI(); conn = new LocalConnection(); conn.client = this; try { conn.connect("myConnection"); } catch (error:ArgumentError) { trace("Can't connect...the connection name is already being used by another SWF"); } } public function lcHandler(msg:String):void { output.appendText(msg + "\n"); } private function buildUI():void { output = new TextField(); output.background = true; output.border = true; output.wordWrap = true; addChild(output); } } }
flash.net.LocalConnection.send()flash.net.LocalConnection.allowDomain()flash.net.LocalConnection.domainstatus Distribué lorsqu’un objet LocalConnection publie son état.flash.events.StatusEvent.STATUSflash.events.StatusEvent Distribué lorsqu’un objet LocalConnection publie son état. Si LocalConnection.send() aboutit, la valeur de la propriété level de l’objet d’événement status correspond à "status". Dans le cas contraire, la propriété level correspond à "error". Si le fichier de réception refuse la connexion, l’appel peut échouer sans que le fichier d’envoi n’en soit averti. LocalConnection.send()securityError Distribué si un appel de LocalConnection.send() tente d’envoyer des données à un autre sandbox de sécurité.flash.events.SecurityErrorEvent.SECURITY_ERRORflash.events.SecurityErrorEvent Distribué si un appel de LocalConnection.send() tente d’envoyer des données à un autre sandbox de sécurité. send()asyncError Distribué lorsqu’une erreur est renvoyée de manière asynchrone ; autrement dit, lorsqu’elle provient du code asynchrone natif.flash.events.AsyncErrorEvent.ASYNC_ERRORflash.events.AsyncErrorEvent Distribué lorsqu’une erreur est renvoyée de manière asynchrone ; autrement dit, lorsqu’elle provient du code asynchrone natif. LocalConnection Crée un objet LocalConnection. Crée un objet LocalConnection. Les objets LocalConnection vous permettent d’activer les communications entre différents fichiers s’exécutant sur un même ordinateur client. flash.net.LocalConnection.connect()flash.net.LocalConnection.send()allowDomain Spécifie un ou plusieurs domaines qui peuvent envoyer des appels LocalConnection à cette occurrence de LocalConnection.Les paramètres spécifiés doivent être des chaînes réglées sur une valeur autre que null. ArgumentErrorArgumentErrordomainsUne ou plusieurs chaînes qui nomment les domaines à partir desquels les appels LocalConnection seront autorisés. Ce paramètre est associé à deux cas spéciaux :
  • Vous pouvez spécifier le caractère générique « ~~ » pour autoriser les appels en provenance de tous les domaines.
  • Vous pouvez spécifier la chaîne localhost pour autoriser les appels de ce fichier à partir de fichiers installés localement. Dans Flash Player 8, des restrictions de sécurité relatives aux fichiers locaux ont été introduites. Par défaut, un fichier SWF s’exécutant dans Flash Player autorisé à accéder à Internet n’a pas accès au système de fichiers local. Dans Flash Player, si vous spécifiez localhost, tout fichier SWF local peut accéder à ce fichier SWF.
Spécifie un ou plusieurs domaines qui peuvent envoyer des appels LocalConnection à cette occurrence de LocalConnection.

Vous ne pouvez pas utiliser cette méthode pour permettre aux fichiers hébergés à l’aide d’un protocole sécurisé (HTTPS) d’autoriser un accès à partir de fichiers hébergés avec des protocoles non sécurisés ; vous devez pour cela utiliser la méthode allowInsecureDomain().

Vous pouvez utiliser cette méthode pour faire en sorte qu’un fichier enfant issu d’un domaine différent puisse effectuer des appels LocalConnection vers le fichier parent, sans connaître le domaine final dont émanera le fichier 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 LoaderInfo utilisé avec le chargement de sorte que le domaine s’utilise avec la méthode allowDomain(). Par exemple, si vous chargez un fichier enfant à l’aide d’un objet Loader, à l’issue du chargement, vous pouvez vérifier la propriété contentLoaderInfo.url de l’objet Loader et analyser le domaine à travers la chaîne URL complète. Si vous procédez ainsi, veillez à attendre la fin du chargement du fichier, car la valeur de la propriété contentLoaderInfo.url ne sera correcte et définitive qu’une fois le fichier entièrement chargé.

Le cas contraire peut aussi se présenter : vous pouvez créer un fichier enfant qui souhaite accepter les appels LocalConnection émanant de son parent, mais qui ignore le domaine de ce dernier. Dans ce cas, mettez en œuvre cette méthode en vérifiant si l’argument de domaine correspond au domaine de la propriété loaderInfo.url dans le fichier chargé. Encore une fois, vous devez analyser le domaine à partir de l’adresse URL complète de loaderInfo.url. Dans ce cas, il n’est pas nécessaire d’attendre la fin du chargement du fichier parent ; le parent sera déjà chargé lorsque celui de l’enfant commencera.

Lorsque vous employez cette méthode, tenez compte du modèle de sécurité de Flash Player. Par défaut, un objet LocalConnection est associé au sandbox du fichier qui l’a créé et les appels interdomaines des objets LocalConnection sont interdits, à moins que vous n’appeliez la méthode LocalConnection.allowDomain() dans le fichier de réception. Néanmoins, dans Adobe AIR, le contenu du sandbox de sécurité application (contenu installé avec l’application AIR) n’est pas soumis à ces restrictions de sécurité.

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

Remarque : le format de la méthode allowDomain() n’est plus le même que dans ActionScript 1.0 et 2.0. Dans ces versions, allowDomain était une méthode de rappel que vous implémentiez. Dans ActionScript 3.0, allowDomain() est une méthode intégrée de LocalConnection que vous appelez. Le fonctionnement de la nouvelle version de allowDomain() est similaire à celui de flash.system.Security.allowDomain().

flash.net.LocalConnection.allowInsecureDomain()flash.display.LoaderInfo.urlflash.system.Security.allowDomain()
allowInsecureDomain Spécifie un ou plusieurs domaines qui peuvent envoyer des appels LocalConnection à cet objet LocalConnection.Les paramètres spécifiés doivent être des chaînes réglées sur une valeur autre que null. ArgumentErrorArgumentErrordomainsUne ou plusieurs chaînes qui nomment les domaines à partir desquels les appels LocalConnection seront autorisés. Ce paramètre est associé à deux cas spéciaux :
  • Vous pouvez spécifier le caractère générique « ~~ » pour autoriser les appels en provenance de tous les domaines. « ~~ » exclut les hôtes locaux.
  • Vous pouvez spécifier la chaîne localhost pour autoriser les appels de ce fichier SWF à partir de fichiers SWF installés localement. Dans Flash Player 8, des restrictions de sécurité relatives aux fichiers SWF locaux ont été introduites. Un fichier SWF autorisé à accéder à Internet n’a pas accès au système de fichiers local. Si vous spécifiez localhost, tout fichier SWF local peut accéder à ce fichier SWF. N’oubliez pas que vous devez également désigner le fichier SWF appelant comme fichier SWF local avec accès au réseau lors de la création.
Spécifie un ou plusieurs domaines qui peuvent envoyer des appels LocalConnection à cet objet LocalConnection.

Le fonctionnement des méthodes allowInsecureDomain() et allowDomain() est identique, mais la méthode allowInsecureDomain() permet en outre aux fichiers de source non HTTPS d’envoyer des appels LocalConnection à des fichiers SWF de source HTTPS. Cette différence n’a d’importance que si vous appelez la méthode allowInsecureDomain() à partir d’un fichier chargé via HTTPS. Vous devez appeler la méthode allowInsecureDomain() même si vous franchissez une limite non HTTPS/HTTPS au sein du même domaine. Par défaut, les appels de LocalConnection entre les fichiers non HTTPS et les fichiers HTTPS sont systématiquement interdits, même au sein d’un même domaine.

L’appel de allowInsecureDomain() est déconseillé, car il risque de compromettre la sécurité offerte par HTTPS. Lorsque vous chargez un fichier via HTTPS, vous avez la quasi-certitude qu’il ne sera pas altéré pendant sa mise en circulation dans le réseau. Si vous autorisez ensuite un fichier non HTTPS à effectuer des appels de LocalConnection vers le fichier HTTPS, vous acceptez des appels en provenance d’un fichier qui a pu être altéré pendant son transport. Vous devez donc redoubler de vigilance, car vous ne pouvez pas vous fier à l’authenticité des appels LocalConnection que reçoit votre fichier HTTPS.

Par défaut, les fichiers hébergés via le protocole HTTPS sont accessibles uniquement aux autres fichiers hébergés également par l’intermédiaire du protocole HTTPS. Cette implémentation préserve l’intégrité fournie par le protocole HTTPS.

Il n’est pas recommandé d’utiliser cette méthode pour annuler le comportement par défaut car elle compromet la sécurité HTTPS. Cependant, vous devrez peut-être l’utiliser, par exemple, si vous devez autoriser l’accès aux fichiers SWF publiés pour Flash Player 9 ou version ultérieure via HTTPS à partir de fichiers SWF publiés pour Flash Player 6 ou version antérieure via HTTP.

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

flash.net.LocalConnection.allowDomain()
close Ferme (déconnecte) un objet LocalConnection.L’occurrence de LocalConnection n’est pas connectée, elle ne peut donc pas être fermée. ArgumentErrorArgumentError Ferme (déconnecte) un objet LocalConnection. Appelez cette commande lorsque vous ne souhaitez plus que l’objet accepte de commandes, par exemple, lorsque vous souhaitez exécuter une commande connect() en utilisant le même paramètre connectionName dans un autre fichier SWF. flash.net.LocalConnection.connect()connect Prépare un objet LocalConnection à recevoir les commandes envoyées à partir d’une commande send() (l’objet LocalConnection d’envoi).La valeur transmise au paramètre connectionName ne doit pas être nulle. TypeErrorTypeErrorCette erreur peut se produire pour trois raisons : 1) La valeur de chaîne transmise au paramètre connectionName était nulle. Utilisez une valeur non nulle. 2) La valeur transmise au paramètre connectionName contenait un deux-points (:). Les deux-points sont des caractères spéciaux utilisés pour séparer le super-domaine de la chaîne connectionName dans la méthode send(), pas dans la méthode connect(). 3) L’occurrence de LocalConnection est déjà connectée. ArgumentErrorArgumentErrorconnectionNameStringChaîne correspondant au nom de connexion spécifié dans la commande send() qui souhaite communiquer avec l’objet LocalConnection de réception. Prépare un objet LocalConnection à recevoir les commandes envoyées à partir d’une commande send() (l’objet LocalConnection d’envoi). L’objet utilisé avec la méthode connect() est appelé objet LocalConnection de réception. Les objets de réception et d’envoi doivent s’exécuter sur le même ordinateur client.

Pour éviter tout conflit, définissez les méthodes associées à l’objet LocalConnection de réception avant d’appeler cette méthode, comme illustré dans l’exemple de la classe LocalConnection.

Par défaut, l’argument connectionName devient "superdomain:connectionName", superdomain représentant le super-domaine du fichier qui contient la commande connect(). Par exemple, si le fichier contenant l’objet LocalConnection de réception se trouve à l’adresse www.someDomain.com, connectionName devient "someDomain.com:connectionName". (si un fichier s’exécutant dans Flash Player se trouve sur l’ordinateur client, la valeur affectée au superdomain est "localhost").

Dans le cas de contenu s’exécutant dans le sandbox de sécurité application dans Adobe AIR (contenu installé avec l’application AIR), le moteur d’exécution remplace le super-domaine par la chaîne app# suivie de l’ID correspondant à l’application AIR (défini dans le fichier descripteur de l’application). Par exemple, l’argument connectionName d’une application dont l’ID est com.example.air.MyApp connectionName devient "app#com.example.air.MyApp:connectionName".

De même, par défaut, Flash Player ne permet à l’objet LocalConnection de réception de n’accepter que les commandes provenant d’objets LocalConnection d’envoi dont le nom de connexion correspond également à une valeur "superdomain:connectionName". De cette manière, Flash Player facilite la communication entre les fichiers situés dans un même domaine.

Si vous implémentez une communication uniquement entre des fichiers appartenant au même domaine, spécifiez pour connectionName une chaîne qui ne commence pas par un caractère de soulignement (_) et qui ne spécifie pas un nom de domaine (par exemple, "myDomain:connectionName"). Utilisez cette même chaîne dans la méthode connect(connectionName).

Si vous implémentez des communications entre des fichiers de domaines différents, la spécification pour connectionName d’une chaîne qui commence par un caractère de soulignement (_) accroît la portabilité interdomaines du fichier associé à l’objet LocalConnection de réception. Les cas de figure possibles sont les suivants :

  • Si la chaîne dédiée à l’argument connectionName ne commence pas par un caractère de soulignement (_), un préfixe suivi de deux points est ajouté au super-domaine (par exemple, "myDomain:connectionName"). Vous avez ainsi la garantie que votre connexion n’entrera pas en conflit avec les connexions de même nom dans d’autres domaines. Cependant, tous les objets LocalConnection d’envoi doivent spécifier ce super-domaine (par exemple, "myDomain:connectionName"). Si le fichier associé à l’objet LocalConnection de réception est déplacé dans un autre domaine, Flash Player modifie le préfixe afin qu’il reflète le nouveau super-domaine (par exemple, « anotherDomain:connectionName »). Tous les objets LocalConnection d’envoi doivent être modifiés manuellement pour pointer vers le nouveau super-domaine.
  • Si la chaîne dédiée à l’argument connectionNamecommence par un caractère de soulignement (par exemple, "_connectionName"), aucun préfixe n’est ajouté à la chaîne. Les objets LocalConnection de réception et d’envoi utilisent donc des chaînes identiques pour connectionName. Si l’objet de réception utilise allowDomain() pour spécifier que les connexions seront acceptées à partir de tous les domaines, le fichier contenant l’objet LocalConnection de réception peut être déplacé dans un autre domaine, sans qu’il soit nécessaire de modifier les objets LocalConnection d’envoi.

Pour plus d’informations, voir la présentation de la classe et la section consacrée au paramètre connectionName de la méthode send(), ainsi que les entrées de allowDomain() et domain.

Remarque : les deux-points sont utilisés en tant que caractères spéciaux pour séparer le super-domaine de la chaîne connectionName. Toute chaîne associée à connectionName contenant deux-points n’est pas valide.

Lorsque vous utilisez cette méthode, tenez compte du modèle de sécurité Flash Player : Par défaut, un objet LocalConnection est associé au sandbox du fichier qui l’a créé et les appels interdomaines des objets LocalConnection sont interdits, à moins que vous n’appeliez la méthode LocalConnection.allowDomain() dans le fichier de réception. Vous pouvez empêcher un fichier 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. Néanmoins, dans Adobe AIR, le contenu du sandbox de sécurité application (contenu installé avec l’application AIR) n’est pas soumis à ces restrictions de sécurité.

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

flash.net.LocalConnection.send()flash.net.LocalConnection.allowDomain()flash.net.LocalConnection.domain
send Appelle la méthode nommée methodName sur une connexion établie à l’aide de la méthode connect(connectionName) (dans l’objet LocalConnection de réception).La valeur de connectionName ou de methodName est nulle. Transmettez des valeurs non nulles à ces paramètres. TypeErrorTypeErrorCette erreur peut se produire pour l’une des raisons suivantes : 1) La valeur de connectionName ou de methodName est une chaîne vide. Transmettez des chaînes valides pour ces paramètres. 2) La méthode spécifiée dans methodName est limitée. 3) Le message sérialisé envoyé est trop volumineux (plus de 40 Ko). ArgumentErrorArgumentErrorconnectionNameStringCorrespond au nom de connexion spécifié dans la commande connect() qui souhaite communiquer avec l’objet LocalConnection d’envoi. methodNameStringNom de la méthode à appeler dans l’objet LocalConnection de réception. Les noms de méthode suivants entraînent l’échec de la commande : send, connect, close, allowDomain, allowInsecureDomain, client et domain. argumentsParamètres facultatifs supplémentaires à transmettre à la méthode spécifiée. Appelle la méthode nommée methodName sur une connexion établie à l’aide de la méthode connect(connectionName) (dans l’objet LocalConnection de réception). L’objet utilisé avec la méthode send() est appelé objet LocalConnection d’envoi. Les fichiers SWF qui contiennent les objets d’envoi et de réception doivent s’exécuter sur le même ordinateur client.

La quantité de données que vous pouvez transmettre en tant que paramètres à cette commande est limitée à 40 Ko. Si send() émet une ArgumentError mais que votre syntaxe est correcte, tentez de répartir les requêtes send() dans plusieurs commandes, chacune comportant moins de 40 Ko de données.

Comme nous l’avons vu à la rubrique connect(), le super-domaine actuel est ajouté à connectionName par défaut. Si vous implémentez la communication entre différents domaines, vous devez définir connectionName dans les objets LocalConnection d’envoi et de réception de sorte que le super-domaine actuel ne soit pas ajouté à connectionName. Pour ce faire, procédez de l’une des deux façons suivantes :

  • Placez un caractère de soulignement (_) au début de connectionName dans les objets LocalConnection d’envoi et de réception. Dans le fichier contenant l’objet de réception, utilisez LocalConnection.allowDomain() pour spécifier que des connexions seront acceptées de tous les domaines. Cette implémentation vous permet de stocker vos fichiers d’envoi et de réception dans n’importe quel domaine.
  • Intégrez le super-domaine à connectionName dans l’objet LocalConnection d’envoi, par exemple, myDomain.com:myConnectionName. Dans l’objet de réception, utilisez LocalConnection.allowDomain() pour spécifier que les connexions à partir du super-domaine spécifié seront acceptées (dans ce cas, myDomain.com) ou que les connexions de tous les domaines seront acceptées.

Remarque : vous ne pouvez pas spécifier de super-domaine dans connectionName dans l’objet LocalConnection de réception ; vous ne pouvez le faire que dans celui d’envoi.

Lorsque vous utilisez cette méthode, tenez compte du modèle de sécurité Flash Player : Par défaut, un objet LocalConnection est associé au sandbox du fichier qui l’a créé et les appels interdomaines des objets LocalConnection sont interdits, à moins que vous n’appeliez la méthode LocalConnection.allowDomain() dans le fichier de réception. Dans le cas de contenu SWF s’exécutant dans le navigateur, vous pouvez empêcher un fichier d’utiliser 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. Néanmoins, dans Adobe AIR, le contenu du sandbox de sécurité application (contenu installé avec l’application AIR) n’est pas soumis à ces restrictions de sécurité.

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

flash.net.LocalConnection.allowDomain()flash.net.LocalConnection.connect()flash.net.LocalConnection.domainsecurityErrorflash.events:SecurityErrorEventLa méthode LocalConnection.send() a tenté de communiquer avec un fichier SWF appartenant à un sandbox de sécurité auquel le code effectuant l’appel n’a pas accès. Vous pouvez contourner ce problème dans l’implémentation de la méthode LocalConnection.allowDomain() du récepteur. LocalConnection.send() a tenté de communiquer avec un fichier SWF appartenant à un sandbox de sécurité auquel le code appelant n’a pas accès.statusflash.events:StatusEventSi la valeur de la propriété level correspond à "status", l’appel a abouti. Si elle correspond à "error", l’appel a échoué. L’appel peut échouer si le fichier SWF de réception refuse la connexion. Si la valeur de la propriété level correspond à « status », l’appel a abouti. Si elle correspond à « error », l’appel a échoué.
client Indique l’objet sur lequel des méthodes de rappel sont appelées.ObjectLa propriété client ne peut pas être réglée sur l’objet null. TypeErrorTypeError Indique l’objet sur lequel des méthodes de rappel sont appelées. L’objet par défaut correspond à this, la connexion locale en cours de création. Si vous réglez la propriété client sur un autre objet, les méthodes de rappel sont appelées sur celui-ci. domain Chaîne représentant le domaine de l’emplacement du fichier actuel.String Chaîne représentant le domaine de l’emplacement du fichier actuel.

Dans le cas de contenu s’exécutant dans le sandbox de sécurité application dans Adobe AIR (contenu installé avec l’application AIR), le moteur d’exécution remplace le super-domaine par la chaîne app# suivie de l’ID correspondant à l’application AIR (défini dans le fichier descripteur de l’application). Par exemple, l’argument connectionName d’une application dont l’ID est com.example.air.MyApp connectionName devient "app#com.example.air.MyApp:connectionName".

Dans les fichiers SWF publiés pour Flash Player 9 ou version ultérieure, la chaîne renvoyée correspond au domaine exact du fichier, y compris aux sous-domaines. Par exemple, si le fichier se trouve à l’adresse www.adobe.com, cette commande renvoie "www.adobe.com".

Si le fichier actuel est un fichier local résidant sur l’ordinateur client et s’exécutant dans Flash Player, cette commande renvoie "localhost".

Les emplois les plus courants de cette propriété consistent à inclure le nom de domaine de l’objet LocalConnection d’envoi en tant que paramètre de la méthode que vous comptez appeler dans l’objet LocalConnection de réception, ou conjointement avec LocalConnection.allowDomain() pour accepter les commandes issues d’un domaine spécifique. Si vous autorisez uniquement la communication entre les objets LocalConnection appartenant au même domaine, vous n’aurez probablement pas besoin d’utiliser cette propriété.

flash.net.LocalConnection.allowDomain()flash.net.LocalConnection.connect()
isSupported La propriété isSupported est définie sur true si la classe LocalConnection est disponible 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 LocalConnection est disponible sur la plate-forme actuelle ; dans le cas contraire, elle est définie sur false. isPerUserBoolean
NetStream La classe NetStream ouvre un canal de diffusion en continu à sens unique sur un objet NetConnection.flash.events:EventDispatcher La classe NetStream ouvre un canal de diffusion en continu à sens unique sur un objet NetConnection.

Utilisez la classe NetStream pour effectuer les opérations suivantes :

  • Appelez NetStream.play() pour lire un fichier multimédia à partir d’un disque local, d’un serveur Web ou de Flash Media Server.
  • Appelez NetStream.publish() pour publier des données vidéo, des données audio et un flux de données dans Flash Media Server.
  • Appelez NetStream.send() pour envoyer des messages de données à tous les clients abonnés.
  • Appelez NetStream.send() pour ajouter des métadonnées à un flux en direct.
  • Appelez NetStream.appendBytes() pour transmettre les données ByteArray dans l’objet NetStream.

Remarque : vous ne pouvez pas afficher ni publier un flux de données sur le même objet NetStream.

Adobe AIR, ainsi que Flash Player 9.0.115.0 et les versions ultérieures, prennent en charge les fichiers dérivés du format conteneur standard MPEG-4. Ces fichiers sont les suivants : F4V, MP4, M4A, MOV, MP4V, 3GP et 3G2, s’ils contiennent des images H.264 ou du son codé au format HEAAC v2, ou les deux. H.264 produit une qualité vidéo supérieure à une vitesse de transmission inférieure par rapport au même profil d’encodage dans Sorenson ou On2. AAC est un format audio standard défini dans la norme vidéo MPEG-4. HE-AAC v2 est une extension du format AAC qui utilise les techniques de réplique spectrale de bande (SBR - Spectral Band Replication) et de stéréo paramétrique pour optimiser l’efficacité de l’encodage à des vitesses de transmission inférieures.

Pour plus d’informations sur les codecs et les formats de fichier pris en charge, voir les références suivantes :

  • Documentation de Flash Media Server
  • Exploration de la prise en charge de Flash Player pour l’audio AAC et la vidéo H.264 haute définition
  • FLV/F4V open specification documents (disponible en anglais uniquement)

Réception de données à partir d’un flux Flash Media Server, d’un fichier F4V ou d’un fichier FLV progressif

Flash Media Server, les fichiers F4V et les fichiers FLV peuvent envoyer des objets d’événement contenant des données à des points de données spécifiques pendant la diffusion ou la lecture. Vous pouvez gérer les données d’un flux ou d’un fichier FLV pendant la lecture de deux manières :

  • Associez une propriété client à un gestionnaire d’événement pour recevoir l’objet de données. Utilisez la propriété NetStream.client pour affecter un objet appelant des fonctions de gestion de données spécifiques. L’objet affecté à la propriété NetStream.client peut écouter les points de données suivants : onCuePoint(), onImageData(), onMetaData(), onPlayStatus(), onSeekPoint(), onTextData() et onXMPData(). Ecrivez des procédures au sein de ces fonctions pour gérer l’objet de données renvoyé par le flux pendant la lecture. Pour plus d’informations, voir la propriété NetStream.client.
  • Associez une propriété client à une sous-classe de la classe NetStream, puis écrivez un gestionnaire d’événement pour recevoir l’objet de données. NetStream est une classe scellée, ce qui signifie qu’il est impossible d’ajouter des propriétés ou des méthodes à un objet NetStream à l’exécution. Vous pouvez cependant créer une sous-classe de NetStream et définir votre gestionnaire d’événement dans la sous-classe. Vous pouvez par ailleurs faire de cette dernière une sous-classe dynamique et ajouter le gestionnaire d’événement à une occurrence de la sous-classe.

Attendez de recevoir un événement NetGroup.Neighbor.Connect avant d’utiliser la réplication d’objets, le routage direct ou les API de publication.

Remarque : pour envoyer des données par l’intermédiaire d’un fichier audio, tel qu’un fichier MP3, utilisez la classe Sound pour associer le fichier audio à un objet Sound. Ensuite, utilisez la propriété Sound.id3 pour lire les métadonnées dans le fichier audio.

L’exemple suivant utilise un objet Video avec les classes NetConnection et NetStream pour charger et lire un fichier FLV.

Dans cet exemple, le code qui crée les objets Video et NetStream et appelle les méthodes Video.attachNetStream() et NetStream.play() est placé dans une fonction de gestionnaire. Le gestionnaire n’est appelé que si la tentative de connexion à l’objet NetConnection a réussi ; c’est-à-dire lorsque l’événement netStatus renvoie un objet info avec une propriété code qui indique la réussite de l’opération. Il est recommandé d’attendre l’établissement d’une connexion avant d’appeler la méthode NetStream.play().

package { import flash.display.Sprite; import flash.events.NetStatusEvent; import flash.events.SecurityErrorEvent; import flash.media.Video; import flash.net.NetConnection; import flash.net.NetStream; import flash.events.Event; public class NetConnectionExample extends Sprite { private var videoURL:String = "http://www.helpexamples.com/flash/video/cuepoints.flv"; private var connection:NetConnection; private var stream:NetStream; private var video:Video = new Video(); public function NetConnectionExample() { connection = new NetConnection(); connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); connection.connect(null); } private function netStatusHandler(event:NetStatusEvent):void { switch (event.info.code) { case "NetConnection.Connect.Success": connectStream(); break; case "NetStream.Play.StreamNotFound": trace("Stream not found: " + videoURL); break; } } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function connectStream():void { var stream:NetStream = new NetStream(connection); stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); stream.client = new CustomClient(); video.attachNetStream(stream); stream.play(videoURL); addChild(video); } } } class CustomClient { public function onMetaData(info:Object):void { trace("metadata: duration=" + info.duration + " width=" + info.width + " height=" + info.height + " framerate=" + info.framerate); } public function onCuePoint(info:Object):void { trace("cuepoint: time=" + info.time + " name=" + info.name + " type=" + info.type); } }
Vous pouvez obtenir des métadonnées à l'aide d'une fonction, au lieu de créer une classe personnalisée. Fournie par Bill Sanders, la suggestion suivante indique la méthode de modification du code NetConnectionExample ci-dessus pour appeler des métadonnées dans une fonction. Dans ce cas, l'objet mdata permet de configurer la largeur et la hauteur d'une instance vidéo video : //Place the following in the connectStream() function //in the NetConnectionExample code var metaSniffer:Object=new Object(); stream.client=metaSniffer; //stream is the NetStream instance metaSniffer.onMetaData=getMeta; // Add the following function within the NetConnectionExample class private function getMeta (mdata:Object):void { video.width=mdata.width/2; video.height=mdata.height/2; }
flash.media.Videoflash.net.NetConnectionappendBytes()play()publish()send()onImageDataonMetaDatamediaTypeData Distribué lors de la lecture de contenu vidéo et du traitement de certains types de messages.flash.events.NetDataEventflash.events.NetDataEvent Distribué lors de la lecture de contenu vidéo et du traitement de certains types de messages.

Un NetDataEvent est distribué pour les messages suivants :

  • onCuePoint
  • onImageData
  • onMetaData
  • onPlayStatus (pour le code NetStream.Play.Complete)
  • onTextData
  • onXMPData

Remarque : cet événement n’est pas distribué par le contenu qui s’exécute dans Flash Player dans le navigateur sur Android ou le système d’exploitation de la tablette Blackberry ou par le contenu s’exécutant dans AIR sur iOS.

onSeekPoint Appelée de façon synchrone par appendBytes() lorsque l’analyseur d’octets détecte un point pouvant faire l’objet d’une recherche (par exemple, une image-clé vidéo). Appelée de façon synchrone par appendBytes() lorsque l’analyseur d’octets détecte un point pouvant faire l’objet d’une recherche (par exemple, une image-clé vidéo). Utilisez cet événement pour construire un tableau de points de recherche. La propriété byteCount correspond à la propriété byteCount au premier octet du message analysable pour ce point de recherche, et est remise à zéro comme décrit ci-dessus. Pour effectuer une recherche, lors de l’événement NetStream.Seek.Notify, recherchez les octets qui commencent à partir d’un point pouvant faire l’objet d’une recherche et appelez appendBytes(bytes). Si l’argument bytes est un ByteArray composé d’octets qui commencent à un point pouvant faire l’objet d’une recherche, la vidéo est lue à partir de ce point de recherche.

Remarque : les appels de appendBytes() à partir de ce rappel sont ignorés.

La propriété onSeekPoint est une propriété de l’objet NetStream.client. Cette propriété est répertoriée dans la section Events, car elle répond aux données transmises à la méthode appendBytes(). Pour plus d’informations, voir la description de la classe NetStream et de la propriété NetStream.client. Vous ne pouvez pas utiliser la méthode addEventListener(), ni aucune autre méthode EventDispatcher, pour écouter ou traiter onSeekPoint comme un événement. Pour utiliser onSeekPoint, définissez une fonction de rappel et associez-la à l’un des objets suivants :

  • Objet auquel fait référence la propriété client d’une occurrence de NetStream.
  • Occurrence d’une sous-classe de NetStream. NetStream est une classe scellée, ce qui signifie qu’il est impossible d’ajouter des propriétés ou des méthodes à un objet NetStream à l’exécution. Vous pouvez cependant créer une sous-classe de NetStream et définir votre gestionnaire d’événement dans la sous-classe. Vous pouvez également faire de cette dernière une sous-classe dynamique et ajouter la fonction de gestionnaire d’événement à une occurrence de la sous-classe.
client
drmStatus Distribué lorsque la lecture du contenu chiffré à l’aide de la gestion des droits numériques (DRM) commence, c’est-à-dire lorsque l’utilisateur est authentifié et autorisé à lire le contenu.flash.events.DRMStatusEvent.DRM_STATUSflash.events.DRMStatusEvent Distribué lorsque la lecture du contenu chiffré à l’aide de la gestion des droits numériques (DRM) commence, c’est-à-dire lorsque l’utilisateur est authentifié et autorisé à lire le contenu.

L’objet DRMStatusEvent contient des informations concernant le voucher : disponibilité du voucher hors connexion, date d’expiration du voucher, accessibilité du contenu aux utilisateurs, etc.

flash.events.DRMStatusEventflash.net.drm.DRMManager.resetDRMVouchers()setDRMAuthenticationCredentials()
drmError Distribué lorsqu’un objet NetStream qui tente de lire un fichier chiffré à l’aide de la gestion des droits numériques (DRM) rencontre une erreur de type DRM.flash.events.DRMErrorEvent.DRM_ERRORflash.events.DRMErrorEvent Distribué lorsqu’un objet NetStream qui tente de lire un fichier chiffré à l’aide de la gestion des droits numériques (DRM) rencontre une erreur de type DRM. Par exemple, un objet DRMErrorEvent est distribué lorsque l’autorisation utilisateur échoue. Il est en effet possible que l’utilisateur n’ait pas acquis les droits nécessaires à l’affichage du contenu ou que le fournisseur de contenu ne prenne pas en charge l’application d’affichage. flash.events.DRMErrorEventflash.net.drm.DRMManager.resetDRMVouchers()setDRMAuthenticationCredentials()drmAuthenticate Distribué lorsqu’un objet NetStream tente de lire un fichier chiffré à l’aide de la gestion des droits numériques (DRM) nécessitant l’obtention d’informations d’identification pour authentifier l’utilisateur avant la lecture.flash.events.DRMAuthenticateEvent.DRM_AUTHENTICATEflash.events.DRMAuthenticateEvent Distribué lorsqu’un objet NetStream tente de lire un fichier chiffré à l’aide de la gestion des droits numériques (DRM) nécessitant l’obtention d’informations d’identification pour authentifier l’utilisateur avant la lecture.

Utilisez la méthode setDRMAuthenticationCredentials() de l’objet NetStream pour authentifier l’utilisateur. En cas d’échec de l’authentification utilisateur, l’application tente de nouveau l’authentification et distribue un nouvel événement DRMAuthenticateEvent pour l’objet NetStream.

flash.events.DRMAuthenticateEventflash.net.drm.DRMManager.resetDRMVouchers()setDRMAuthenticationCredentials()
onDRMContentData Etablit un écouteur pour répondre lorsque AIR extrait les métadonnées de contenu DRM intégrées dans un fichier multimédia. Etablit un écouteur pour répondre lorsque AIR extrait les métadonnées de contenu DRM intégrées dans un fichier multimédia.

Un objet DRMContentData contient les informations nécessaires à l’obtention du voucher requis pour lire un fichier multimédia protégé par DRM. Utilisez la classe DRMManager pour télécharger le voucher avec ces informations.

onDRMContentData est une propriété de l’objet NetStream.client. Cette propriété est répertoriée dans la section Events, car elle correspond à un événement data lors du préchargement des données incorporées depuis un fichier multimédia local. Pour plus d’informations, voir la description de la classe NetStream. Vous ne pouvez pas utiliser la méthode addEventListener(), ni toute autre méthode EventDispatcher pour écouter ou traiter onDRMContentData comme un événement. Vous devez en revanche définir une fonction de rappel unique et l’associer directement à l’un des objets suivants :

  • Objet auquel fait référence la propriété client d’une occurrence de NetStream.
  • Occurrence d’une sous-classe de NetStream. NetStream est une classe scellée, ce qui signifie qu’il est impossible d’ajouter des propriétés ou des méthodes à un objet NetStream à l’exécution. Vous pouvez cependant créer une sous-classe de NetStream et définir votre gestionnaire d’événements dans la sous-classe ou faire de celle-ci une sous-classe dynamique et ajouter la fonction de gestionnaire d’événement à une de ses occurrences.
flash.net.drm.DRMContentDatapreloadEmbeddedData()flash.net.drm.DRMManagerflash.net.drm.DRMVoucher
onPlayStatus Etablit un écouteur pour qu’il réponde lorsque un objet NetStream a terminé la lecture d’un flux. Etablit un écouteur pour qu’il réponde lorsque un objet NetStream a terminé la lecture d’un flux. L’objet d’événement associé fournit des informations autres que ce renvoie l’événement netStatus. Vous pouvez utiliser cette propriété pour déclencher des actions dans votre code lorsqu’un objet NetStream est passé d’un flux continu à un autre dans une liste de lecture (ce qu’indique l’objet d’informations NetStream.Play.Switch) ou lorsque l’objet NetStream a terminé la lecture du flux continu (ce qu’indique l’objet d’informations NetStream.Play.Complete).

onPlayStaus est en fait une propriété de l’objet NetStream.client. Cette propriété est répertoriée dans la section Events, car elle répond à un événement data, soit lors de la diffusion de données multimédias avec Flash Media Server soit lors de la lecture d’un fichier FLV. Pour plus d’informations, voir la description de la classe NetStream. Vous ne pouvez pas utiliser la méthode addEventListener(), ni toute autre méthode EventDispatcher pour écouter ou traiter onPlayStatus comme un événement. Définissez une fonction de rappel et associez-la à l’un des objets suivants :

  • Objet auquel fait référence la propriété client d’une occurrence de NetStream.
  • Occurrence d’une sous-classe de NetStream. NetStream est une classe scellée, ce qui signifie qu’il est impossible d’ajouter des propriétés ou des méthodes à un objet NetStream à l’exécution. Créez une sous-classe de NetStream et définissez votre gestionnaire d’événement dans la sous-classe. Vous pouvez également faire de cette dernière une sous-classe dynamique et ajouter la fonction de gestionnaire d’événement à une occurrence de la sous-classe.

Cet événement peut renvoyer un objet d’informations doté des propriétés suivantes :

Propriété du codePropriété de niveauSignificationNetStream.Play.Switch"status"L’abonné passe d’un flux continu à un autre dans une liste de lecture.NetStream.Play.Complete"status"La lecture est terminée.NetStream.Play.TransitionComplete"status"L’abonné bascule vers un nouveau flux en résultat du basculement du débit du flux.
clientflash.events.NetStatusEvent.NET_STATUSasyncErroronMetaDataonCuePoint
onCuePoint Etablit un écouteur pour qu’il réponde lorsqu’un point de repère intégré est atteint pendant la lecture d’un fichier vidéo. Etablit un écouteur pour qu’il réponde lorsqu’un point de repère intégré est atteint pendant la lecture d’un fichier vidéo. Vous pouvez utiliser l’écouteur pour déclencher des actions dans votre code lorsque le fichier vidéo atteint un point de repère spécifique. Ceci vous permet de synchroniser d’autres actions dans votre application avec les événements de lecture vidéo. Pour plus d’informations sur les formats des fichiers vidéo pris en charge par Flash Media Server, voir www.adobe.com/go/learn_fms_fileformats_en.

onCuePoint est en fait une propriété de l’objet NetStream.client. Cette propriété est répertoriée dans la section Events, car elle répond à un événement data, soit lors de la diffusion de données multimédias avec Flash Media Server soit lors de la lecture d’un fichier FLV. Pour plus d’informations, voir la description de la classe NetStream. Vous ne pouvez pas utiliser la méthode addEventListener(), ni toute autre méthode EventDispatcher pour écouter ou traiter onCuePoint comme un événement. Définissez une fonction de rappel et associez-la à l’un des objets suivants :

  • Objet auquel fait référence la propriété client d’une occurrence de NetStream.
  • Occurrence d’une sous-classe de NetStream. NetStream est une classe scellée, ce qui signifie qu’il est impossible d’ajouter des propriétés ou des méthodes à un objet NetStream à l’exécution. Créez une sous-classe de NetStream et définissez votre gestionnaire d’événement dans la sous-classe. Vous pouvez également faire de cette dernière une sous-classe dynamique et ajouter la fonction de gestionnaire d’événement à une occurrence de la sous-classe.

L’écouteur d’événement associé est déclenché après un appel de la méthode NetStream.play(), mais avant que la tête de lecture vidéo n’ait avancé.

Vous pouvez incorporer les types de points de repère suivants dans un fichier vidéo :

  • Un point de repère de navigation spécifie, au sein du fichier vidéo, une image-clé à laquelle correspond la propriété time du point de repère. Les points de repère de navigation sont souvent utilisés comme signets ou points d’entrée pour permettre aux utilisateurs de parcourir le fichier vidéo.
  • Un point de repère d’événement spécifie une durée. La durée peut ou non correspondre à une image-clé spécifique. Un point de repère d’événement représente généralement dans le fichier vidéo un minutage auquel il se produit un événement qui pourrait être utilisé pour déclencher d’autres événements d’application.

L’objet d’événement onCuePoint possède les propriétés suivantes :

PropriétéDescriptionnameNom attribué au point de repère lors de son imbrication dans le fichier vidéo.paramètresTableau associatif de chaînes constituées de paires nom/valeur spécifiées pour ce point de repère. Il est possible d’utiliser toute chaîne valide pour le paramètre de nom ou de valeur.timeDurée (en secondes) jusqu’au point de repère qui survient dans le fichier vidéo au cours de la lecture.typeType de point de repère atteint, navigation ou événement.

Vous pouvez définir des points de repère dans un fichier vidéo lorsque vous encodez initialement celui-ci ou lorsque vous importez un clip vidéo dans l’outil de création de Flash à l’aide de l’assistant d’importation vidéo.

L’événement onMetaData extrait également des informations sur les points de repère d’un fichier vidéo. Toutefois, l’événement onMetaData extrait des informations sur tous les points de repère avant le début de la lecture du fichier. L’événement onCuePoint extrait des informations sur un seul point de repère, au minutage spécifié pour ce point au cours de la lecture.

En règle générale, pour que votre code réagisse à un certain point de repère au moment où il se produit, utilisez l’événement onCuePoint pour déclencher une action dans votre code.

Vous pouvez utiliser la liste de points de repère fournie à l’événement onMetaData pour permettre à l’utilisateur de commencer à lire la vidéo à des points prédéfinis du flux vidéo. Transmettez la valeur de la propriété time du point de repère à la méthode NetStream.seek() pour lire la vidéo à partir de ce dernier.

L’exemple suivant indique comment charger des fichiers FLV externes, et répondre à des métadonnées et à des points de repère. Exemple fourni par ActionScriptExamples.com. var video:Video = new Video(); addChild(video); var nc:NetConnection = new NetConnection(); nc.connect(null); var ns:NetStream = new NetStream(nc); ns.client = {}; ns.client.onMetaData = ns_onMetaData; ns.client.onCuePoint = ns_onCuePoint; ns.play("http://www.helpexamples.com/flash/video/cuepoints.flv"); video.attachNetStream(ns); function ns_onMetaData(item:Object):void { trace("metaData"); // Resize video instance. video.width = item.width; video.height = item.height; // Center video instance on Stage. video.x = (stage.stageWidth - video.width) / 2; video.y = (stage.stageHeight - video.height) / 2; } function ns_onCuePoint(item:Object):void { trace("cuePoint"); trace(item.name + "\t" + item.time); }
clientonMetaData
onTextData Etablit un écouteur pour qu’il réponde lorsque Flash Player reçoit des données texte intégrées dans un fichier multimédia en cours de lecture. Etablit un écouteur pour qu’il réponde lorsque Flash Player reçoit des données texte intégrées dans un fichier multimédia en cours de lecture. Les données texte sont au format UTF-8 et peuvent contenir des informations sur le formatage basées sur la spécification Timed Text 3GP.

onTextData est en fait une propriété de l’objet NetStream.client. Cette propriété est répertoriée dans la section Events, car elle répond à un événement data, soit lors de la diffusion de données multimédias avec Flash Media Server soit lors de la lecture d’un fichier FLV. Pour plus d’informations, voir la description de la classe NetStream. Vous ne pouvez pas utiliser la méthode addEventListener(), ni toute autre méthode EventDispatcher pour écouter ou traiter onTextData comme un événement. Définissez une fonction de rappel et associez-la à l’un des objets suivants :

  • Objet auquel fait référence la propriété client d’une occurrence de NetStream.
  • Occurrence d’une sous-classe de NetStream. NetStream est une classe scellée, ce qui signifie qu’il est impossible d’ajouter des propriétés ou des méthodes à un objet NetStream à l’exécution. Créez une sous-classe de NetStream et définissez votre gestionnaire d’événement dans la sous-classe. Vous pouvez également faire de cette dernière une sous-classe dynamique et ajouter la fonction de gestionnaire d’événement à une occurrence de la sous-classe.

L’écouteur d’événement associé est déclenché après un appel de la méthode NetStream.play(), mais avant que la tête de lecture vidéo n’ait avancé.

L’objet d’événement onTextData contient une propriété pour chaque partie de données texte.

Le code de cet exemple utilise la propriété Netstream.client pour gérer les fonctions de rappel pour onTextData et onImageData. La fonction onImageDataHandler() utilise l’objet d’événement onImageData imageData pour stocker le tableau d’octets. Et la fonction onTextDataHandler() utilise l’objet d’événement onTextData textData pour stocker les morceaux de données texte (chaque morceau de données est une propriété de l’objet textData).

Vous devez remplacer l’emplacement « yourURL » de votre code par un emplacement réel conduisant vers un fichier multimédia avec métadonnées d’image ou de texte.

Vous pouvez également gérer les données de texte et d’images à l’aide d’une classe personnalisée. Voir l’article Gestion des métadonnées et des points de repères dans Flash Video pour plus d’informations et d’exemples.

package { import flash.display.*; import flash.net.*; import flash.media.*; import flash.system.*; import flash.events.*; public class OnTextDataExample extends Sprite { public function OnTextDataExample():void { var customClient:Object = new Object(); customClient.onImageData = onImageDataHandler; customClient.onTextData = onTextDataHandler; var my_nc:NetConnection = new NetConnection(); my_nc.connect(null); var my_ns:NetStream = new NetStream(my_nc); my_ns.play("yourURL"); my_ns.client = customClient; var my_video:Video = new Video(); my_video.attachNetStream(my_ns); addChild(my_video); } public function onImageDataHandler(imageData:Object):void { trace("imageData length: " + imageData.data.length); var imageloader:Loader = new Loader(); imageloader.loadBytes(imageData.data); // imageData.data is a ByteArray object. addChild(imageloader); } public function onTextDataHandler(textData:Object):void { trace("--- textData properties ----"); var key:String; for (key in textData) { trace(key + ": " + textData[key]); } } } }
NetConnectionclientasyncErrorplay()onImageData
onImageData Etablit un écouteur pour qu’il réponde lorsque Flash Player reçoit des données d’images sous forme de tableau d’octets intégré dans un fichier multimédia en cours de lecture. Etablit un écouteur pour qu’il réponde lorsque Flash Player reçoit des données d’images sous forme de tableau d’octets intégré dans un fichier multimédia en cours de lecture. Les données d’image peuvent produire du contenu JPEG, PNG ou GIF. Utilisez la méthode flash.display.Loader.loadBytes() pour charger le tableau d’octets dans un objet d’affichage.

onImageData est en fait une propriété de l’objet NetStream.client. Cette propriété est répertoriée dans la section Events, car elle répond à un événement data, soit lors de la diffusion de données multimédias avec Flash Media Server soit lors de la lecture d’un fichier FLV. Pour plus d’informations, voir la description de la classe NetStream. Vous ne pouvez pas utiliser la méthode addEventListener(), ni toute autre méthode EventDispatcher pour écouter ou traiter onImageData comme un événement. Définissez une fonction de rappel unique et associez-la à l’un des objets suivants :

  • Objet auquel fait référence la propriété client d’une occurrence de NetStream.
  • Occurrence d’une sous-classe de NetStream. NetStream est une classe scellée, ce qui signifie qu’il est impossible d’ajouter des propriétés ou des méthodes à un objet NetStream à l’exécution. Créez une sous-classe de NetStream et définissez votre gestionnaire d’événement dans la sous-classe. Vous pouvez également faire de cette dernière une sous-classe dynamique et ajouter la fonction de gestionnaire d’événement à une occurrence de la sous-classe.

L’écouteur d’événement associé est déclenché après un appel de la méthode NetStream.play(), mais avant que la tête de lecture vidéo n’ait avancé.

L’objet d’événement onImageData contient les données d’images sous la forme d’un tableau d’octets envoyé par l’intermédiaire d’un canal de données AMF0.

Le code de cet exemple utilise la propriété Netstream.client pour gérer les fonctions de rappel pour onTextData et onImageData. La fonction onImageDataHandler() utilise l’objet d’événement onImageData imageData pour stocker le tableau d’octets. Et la fonction onTextDataHandler() utilise l’objet d’événement onTextData textData pour stocker les morceaux de données texte (chaque morceau de données est une propriété de l’objet textData).

Vous devez remplacer l’emplacement « yourURL » de votre code par un emplacement réel conduisant vers un fichier multimédia avec métadonnées d’image ou de texte.

Vous pouvez également gérer les données de texte et d’images à l’aide d’une classe personnalisée. Voir l’article Gestion des métadonnées et des points de repères dans Flash Video pour plus d’informations et d’exemples.

package { import flash.display.*; import flash.net.*; import flash.media.*; import flash.system.*; import flash.events.*; public class OnTextDataExample extends Sprite { public function OnTextDataExample():void { var customClient:Object = new Object(); customClient.onImageData = onImageDataHandler; customClient.onTextData = onTextDataHandler; var my_nc:NetConnection = new NetConnection(); my_nc.connect(null); var my_ns:NetStream = new NetStream(my_nc); my_ns.play("yourURL"); my_ns.client = customClient; var my_video:Video = new Video(); my_video.attachNetStream(my_ns); addChild(my_video); } public function onImageDataHandler(imageData:Object):void { trace("imageData length: " + imageData.data.length); var imageloader:Loader = new Loader(); imageloader.loadBytes(imageData.data); // imageData.data is a ByteArray object. addChild(imageloader); } public function onTextDataHandler(textData:Object):void { trace("--- textData properties ----"); var key:String; for (key in textData) { trace(key + ": " + textData[key]); } } } }
NetConnectionflash.display.Loader.loadBytes()clientasyncErrorplay()onTextData
onMetaData Etablit un écouteur pour qu’il réponde lorsque Flash Player reçoit une description intégrée à la vidéo en cours de lecture. Etablit un écouteur pour qu’il réponde lorsque Flash Player reçoit une description intégrée à la vidéo en cours de lecture. Pour plus d’informations sur les formats des fichiers vidéo pris en charge par Flash Media Server, voir www.adobe.com/go/learn_fms_fileformats_en.

onMetaData est en fait une propriété de l’objet NetStream.client. Cette propriété est répertoriée dans la section Events, car elle répond à un événement data, soit lors de la diffusion de données multimédias avec Flash Media Server soit lors de la lecture d’un fichier FLV. Pour plus d’informations, voir la description de la classe NetStream et de la propriété NetStream.client. Vous ne pouvez pas utiliser la méthode addEventListener(), ni toute autre méthode EventDispatcher, pour écouter ou traiter onMetaData comme un événement. Définissez une fonction de rappel unique et associez-la à l’un des objets suivants :

  • Objet auquel fait référence la propriété client d’une occurrence de NetStream.
  • Occurrence d’une sous-classe de NetStream. NetStream est une classe scellée, ce qui signifie qu’il est impossible d’ajouter des propriétés ou des méthodes à un objet NetStream à l’exécution. Vous pouvez créer une sous-classe de NetStream et définir votre gestionnaire d’événement dans la sous-classe. Vous pouvez également faire de cette dernière une sous-classe dynamique et ajouter la fonction de gestionnaire d’événement à une occurrence de la sous-classe.

L’utilitaire Flash Video Exporter (version 1.1 ou supérieure) intègre la durée de la vidéo, sa date de création, les débits et d’autres informations dans le fichier vidéo. Différents encodeurs vidéo intègrent différents jeux de métadonnées.

L’écouteur d’événement associé est déclenché après un appel de la méthode NetStream.play(), mais avant que la tête de lecture vidéo n’ait avancé.

Dans la plupart des cas, la valeur de durée intégrée dans les métadonnées du flux se rapproche de la durée réelle, mais n’est pas exacte. En d’autres termes, elle ne correspond pas toujours à la valeur de la propriété NetStream.time lorsque la tête de lecture est à la fin du flux vidéo.

L’objet d’événement transmis au gestionnaire d’événement onMetaData contient une propriété pour chaque élément de données.

L’exemple suivant indique comment charger des fichiers FLV externes, et répondre à des métadonnées et à des points de repère. Exemple fourni par ActionScriptExamples.com. var video:Video = new Video(); addChild(video); var nc:NetConnection = new NetConnection(); nc.connect(null); var ns:NetStream = new NetStream(nc); ns.client = {}; ns.client.onMetaData = ns_onMetaData; ns.client.onCuePoint = ns_onCuePoint; ns.play("http://www.helpexamples.com/flash/video/cuepoints.flv"); video.attachNetStream(ns); function ns_onMetaData(item:Object):void { trace("metaData"); // Resize video instance. video.width = item.width; video.height = item.height; // Center video instance on Stage. video.x = (stage.stageWidth - video.width) / 2; video.y = (stage.stageHeight - video.height) / 2; } function ns_onCuePoint(item:Object):void { trace("cuePoint"); trace(item.name + "\t" + item.time); }
NetConnectionclientasyncErroronCuePointplay()time
onXMPData Définit un écouteur pour qu’il réponde lorsque Flash Player reçoit des informations spécifiques à XMP (Extensible Metadata Platform) d’Adobe, intégrées à la vidéo lue. Définit un écouteur pour qu’il réponde lorsque Flash Player reçoit des informations spécifiques à XMP (Extensible Metadata Platform) d’Adobe, intégrées à la vidéo lue. Pour plus d’informations sur les formats des fichiers vidéo pris en charge par Flash Media Server, voir www.adobe.com/go/learn_fms_fileformats_en.

onXMPData est en réalité une propriété de l’objet NetStream.client. Cette propriété est répertoriée dans la section Events, car elle répond à un événement data, soit lors de la diffusion de données multimédias avec Flash Media Server soit lors de la lecture d’un fichier FLV. Pour plus d’informations, voir la description de la classe NetStream et de la propriété NetStream.client. Vous ne pouvez pas utiliser la méthode addEventListener(), ni toute autre méthode EventDispatcher, pour écouter ou traiter onMetaData comme un événement. Définissez une fonction de rappel et associez-la à l’un des objets suivants :

  • Objet auquel fait référence la propriété client d’une occurrence de NetStream.
  • Occurrence d’une sous-classe de NetStream. NetStream est une classe scellée, ce qui signifie qu’il est impossible d’ajouter des propriétés ou des méthodes à un objet NetStream à l’exécution. Vous pouvez cependant créer une sous-classe de NetStream et définir votre gestionnaire d’événement dans la sous-classe. Vous pouvez également faire de cette dernière une sous-classe dynamique et ajouter la fonction de gestionnaire d’événement à une occurrence de la sous-classe.

L’écouteur d’événement associé est déclenché après un appel de la méthode NetStream.play(), mais avant que la tête de lecture vidéo n’ait avancé.

L’objet transmis à la fonction de gestion d’événement onXMPData() a une propriété data, qui correspond à une chaîne. La chaîne est générée à partir d’un champ UUID de premier niveau (l’UUID 128 bits du champ de premier niveau est BE7ACFCB-97A9-42E8-9C71-999491E3AFAC). Ce champ UUID de premier niveau contient un document XML représenté sous forme de chaîne UTF-8 terminée par un octet nul.

flash.net.NetConnectionclientasyncErroronCuePointplay()time
netStatus Distribué lorsqu’un objet NetStream publie son état ou signale une erreur.flash.events.NetStatusEvent.NET_STATUSflash.events.NetStatusEvent Distribué lorsqu’un objet NetStream publie son état ou signale une erreur. L’événement netStatus renferme une propriété info composée d’un objet d’informations contenant des informations spécifiques sur l’événement, telles que la réussite ou l’échec d’une tentative de connexion. flash.events.NetStatusEvent.infoioError Distribué lorsqu’il se produit une erreur d’entrée ou de sortie entraînant l’échec d’une opération réseau.flash.events.IOErrorEvent.IO_ERRORflash.events.IOErrorEvent Distribué lorsqu’il se produit une erreur d’entrée ou de sortie entraînant l’échec d’une opération réseau. asyncError Distribué lorsqu’une erreur est renvoyée de manière asynchrone ; autrement dit, lorsqu’elle provient du code asynchrone natif.flash.events.AsyncErrorEvent.ASYNC_ERRORflash.events.AsyncErrorEvent Distribué lorsqu’une erreur est renvoyée de manière asynchrone ; autrement dit, lorsqu’elle provient du code asynchrone natif. Cet événement est distribué lorsqu’un serveur appelle une méthode non définie sur le client. onPlayStatusonMetaDatastatus Distribué lorsque l’application tente de lire un fichier chiffré à l’aide de la gestion des droits numériques (DRM) en appelant la méthode NetStream.play().flash.events.StatusEvent.STATUSflash.events.StatusEvent Distribué lorsque l’application tente de lire un fichier chiffré à l’aide de la gestion des droits numériques (DRM) en appelant la méthode NetStream.play(). La valeur de la propriété du code d’état est la suivante : "DRM.encryptedFLV". play()NetStream Crée un flux qui permet de lire des fichiers multimédias et d’envoyer des données sur un objet NetConnection.L’occurrence de NetConnection n’est pas connectée. ArgumentErrorArgumentErrorconnectionflash.net:NetConnectionObjet NetConnection. peerIDStringconnectToFMSCe paramètre facultatif est disponible dans Flash Player 10 et les versions ultérieures, pour une utilisation avec des connexions RTMFP. (Si la valeur de la propriété NetConnection.protocol n’est pas "rtmfp", ce paramètre est ignoré.) Utilisez l’une des valeurs suivantes :
  • Pour vous connecter à Flash Media Server, spécifiez NetStream.CONNECT_TO_FMS.
  • Pour publier directement sur des homologues, spécifiez NetStream.DIRECT_CONNECTIONS.
  • Pour lancer la lecture directement depuis un homologue donné, spécifiez l’identité de ce dernier (voir NetConnection.nearID et NetStream.farID).
  • (Flash Player 10.1 ou AIR  2 ou version ultérieure) Pour publier ou lire un flux dans un groupe de multidiffusion homologue à homologue, spécifiez une chaîne groupspec (voir la classe GroupSpecifier).

Dans la plupart des cas, un groupspec peut utiliser la liaison montante du réseau sur le système local. Dans ce cas, l’utilisateur doit donner l’autorisation d’utiliser les ressources réseau. Si l’utilisateur accorde cette autorisation, un événement NetStatusEvent NetStream.Connect.Success est envoyé à l’écouteur d’événement de l’objet NetConnection. Si l’utilisateur ne donne pas son accord, un événement NetStream.Connect.Rejected est envoyé. Lorsque vous spécifiez un groupspec, il n’est pas conseillé d’utiliser les méthodes de l’objet NetStream tant qu’un événement NetStream.Connect.Success n’est pas reçu. Le cas échéant, une exception est renvoyée.

Si vous incluez ce paramètre dans l’instruction du constructeur et transmettez une valeur null, la valeur est définie sur "connectToFMS".

Crée un flux qui permet de lire des fichiers multimédias et d’envoyer des données sur un objet NetConnection. Le code suivant illustre une connexion permettant de télécharger et d’afficher, progressivement, une vidéo affectée à la variable videoURL : var my_nc:NetConnection = new NetConnection(); my_nc.connect(null); var my_ns:NetStream = new NetStream(my_nc); my_ns.play(videoURL); var my_video:Video = new Video(); my_video.attachNetStream(my_ns); addChild(my_video); Le code suivant illustre une connexion permettant de diffuser et d’afficher une vidéo (affectée à la variable videoURL) sur une occurrence de Flash Media Server distante spécifiée dans la commande connect() : var my_nc:NetConnection = new NetConnection(); my_nc.connect("rtmp://www.yourfmsserver.com/someappname"); var my_ns:NetStream = new NetStream(my_nc, NetStream.CONNECT_TO_FMS); my_ns.play(videoURL); var my_video:Video = new Video(); my_video.attachNetStream(my_ns); addChild(my_video);
CONNECT_TO_FMSDIRECT_CONNECTIONSfarIDflash.media.Video.attachCamera()flash.net.GroupSpecifierflash.net.GroupSpecifier.groupspecWithAuthorizations()flash.net.GroupSpecifier.groupspecWithoutAuthorizations()flash.net.GroupSpecifier.multicastEnabledflash.net.NetConnectionflash.net.NetConnection.nearIDflash.net.NetConnection.protocolflash.net.NetGroupflash.events.NetStatusEvent.info.code="NetStream.Connect.Rejected"flash.events.NetStatusEvent.info.code="NetStream.Connect.Success"
appendBytesAction Indique une discontinuité dans l’échelle de temps, vide le contenu de la FIFO et demande à l’analyseur d’octets de prévoir un en-tête de fichier ou le début d’une balise FLV.netStreamAppendBytesActionString Indique une discontinuité dans l’échelle de temps, vide le contenu de la FIFO et demande à l’analyseur d’octets de prévoir un en-tête de fichier ou le début d’une balise FLV.

Les appels de NetStream.seek() vident les mémoires tampons de l’objet NetStream. L’analyseur d’octets reste en mode de vidage jusqu’à ce que vous appeliez appendBytesAction() et transmettiez l’argument RESET_BEGIN ou RESET_SEEK. Capturez l’événement "NetStream.seek.notify" pour appeler appendBytesAction() après une recherche. Un nouvel en-tête de fichier peut prendre en charge les listes de lecture et effectuer des recherches sans appeler NetStream.seek().

Vous pouvez également appeler cette méthode pour réinitialiser l’analyseur d’octets pour le rappel de onSeekPoint()).

appendBytes()seek()flash.net.NetStreamAppendBytesAction
appendBytes Transmet un ByteArray à un NetStream pour la lecture.bytesflash.utils:ByteArray Transmet un ByteArray à un NetStream pour la lecture. Appelez cette méthode sur un objet NetStream en « mode de génération de données ». Pour placer un objet NetStream en mode de génération de données, appelez NetStream.play(null) sur un NetStream créé sur un objet NetConnection connecté à null. L’appel de la méthode appendBytes() sur un objet NetStream qui n’est pas en mode de génération de données est une erreur et renvoie une exception.

L’analyseur d’octets interprète un fichier FLV avec un en-tête. Après l’analyse de l’en-tête, appendBytes() s’attend à ce que tous les futurs appels soient la continuation du même fichier réel ou virtuel. Un autre en-tête n’est pas attendu, à moins que appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN) soit appelée.

Un objet NetStream possède deux mémoires tampons : la FIFO de appendBytes() à l’objet NetStream et la mémoire tampon de lecture. La FIFO est la mémoire tampon de réassemblage des balises FLV partielles et ne contient pas plus d’une balise FLV incomplète. Les appels de la méthode NetStream.seek() vident les deux mémoires tampons. Après un appel de la méthode seek(), appelez appendBytesAction() pour réinitialiser l’échelle de temps afin qu’elle commence à la date et à l’heure du prochain message joint.

Chaque appel de la méthode appendBytes() ajoute des octets à la FIFO jusqu’à ce qu’une balise FLV soit complète. Lorsqu’une balise FLV est complète, elle se déplace vers la mémoire tampon de lecture. Un appel de la méthode appendBytes() peut écrire plusieurs balises FLV. Les premiers octets complètent une balise FLV existante (qui se déplace vers la mémoire tampon de lecture). Les balises FLV complètes se déplacent vers la mémoire tampon de lecture. Les octets restants qui ne forment pas une balise FLV complète sont placés dans la FIFO. Les octets dans la FIFO sont terminés par un appel à appendBytes() ou vidés par un appel à appendBytesAction() avec l’argument RESET_SEEK ou RESET_BEGIN.

Remarque : il est possible que l’analyseur d’octets ne parvienne pas à décoder complètement un appel de la méthode appendBytes() jusqu’au prochain appel de appendBytes().

appendBytesAction()seek()
attachAudio Associe un flux audio à un objet NetStream à partir d’un objet Microphone transmis en tant que source."null" microphoneflash.media:MicrophoneSource du flux audio à transmettre. Associe un flux audio à un objet NetStream à partir d’un objet Microphone transmis en tant que source. Cette méthode n’est accessible qu’à l’éditeur du flux continu spécifié.

Utilisez cette méthode avec Flash Media Server pour envoyer des données audio en direct au serveur. Appelez cette méthode avant ou après l’appel de publish().

Définissez la propriété Microphone.rate de sorte qu’elle corresponde à la valeur du périphérique de capture audio. Appelez setSilenceLevel() pour définir le seuil de silence. Pour contrôler les propriétés audio (volume et balance) du flux audio, utilisez la propriété Microphone.soundTransform.

     var nc:NetConnection = new NetConnection();
     nc.connect("rtmp://server.domain.com/app");
     var ns:NetStream = new NetStream(nc);
     
     var live_mic:Microphone = Microphone.get();
     live_mic.rate = 8;
     live_mic.setSilenceLevel(20,200);
     
     var soundTrans:SoundTransform = new SoundTransform();
     soundTrans.volume = 6;
     live_mic.soundTransform = soundTrans;
     
     ns.attachAudio(live_mic);
     ns.publish("mic_stream","live")
     

Pour entendre le son, appelez la méthode NetStream.play(), puis appelez DisplayObjectContainer.addChild() pour acheminer le son à un objet de la liste d’affichage.

play()flash.media.Microphoneflash.display.DisplayObjectContainer.addChild()
attachCamera Démarre la capture vidéo à partir de la caméra ou arrête la capture si theCamera est défini sur null.theCameraflash.media:CameraSource de la transmission vidéo. Les valeurs supportées sont un objet Camera (qui amorce la capture vidéo) et null. Si vous utilisez la valeur null, l’application interrompt la capture vidéo et tous les autres paramètres que vous envoyez sont ignorés. snapshotMillisecondsint-1Spécifie si le flux vidéo est continu, une image unique ou une série d’images uniques utilisées pour créer une séquence en accéléré.
  • Si vous omettez ce paramètre, l’application capture toutes les données vidéo jusqu’à ce que vous transmettiez la valeur null à attachCamera.
  • Si vous transmettez 0, l’application capture une seule image vidéo. Utilisez cette valeur pour transmettre des « instantanés » dans un flux préexistant. Flash Player ou AIR interprète les arguments non valides, négatif ou non numériques comme valeur 0.
  • Si vous transmettez une valeur positive, l’application capture une image vidéo unique, puis ajoute une pause de la durée spécifiée en suffixe sur l’instantané. Utilisez cette valeur pour créer des effets d’accéléré.
Démarre la capture vidéo à partir de la caméra ou arrête la capture si theCamera est défini sur null. Cette méthode n’est accessible qu’à l’éditeur du flux continu spécifié.

Cette méthode est conçue pour une utilisation avec Flash Media Server. Pour plus d’informations, voir la description de la classe.

Une fois la source vidéo associée, vous devez appeler NetStream.publish() pour commencer la transmission. Les abonnés qui souhaitent afficher la vidéo doivent appeler les méthodes NetStream.play() et Video.attachCamera() pour afficher la vidéo sur la scène.

Vous pouvez utiliser snapshotMilliseconds pour envoyer un instantané unique (avec valeur 0) ou une série d’instantanés, soit une séquence en accéléré (time lapse), en spécifiant un nombre positif qui ajoute à la source vidéo le nombre indiqué de millisecondes. Ce nombre étend la durée d’affichage du message vidéo. Si vous appelez attachCamera() à plusieurs reprises en définissant une valeur positive pour snapshotMilliseconds, la séquence d’instantanés et les millisecondes supplémentaires en alternance créent une séquence en accéléré. Vous pouvez, par exemple, capturer une image par jour et l’ajouter à la fin du fichier vidéo. Lorsqu’un abonné lit le fichier, chaque image s’affiche pendant le nombre spécifié de millisecondes, puis l’image suivante apparaît.

Le paramètre snapshotMilliseconds n’a pas le même objectif que le paramètre fps, que vous pouvez définir à l’aide de la méthode Camera.setMode(). Lorsque vous spécifiez snapshotMilliseconds, vous contrôlez le temps qui s’écoule entre les images enregistrées. Lorsque vous spécifiez fps à l’aide de Camera.setMode(), vous contrôlez le temps qui s’écoule à l’enregistrement et à la lecture.

Imaginons, par exemple, que vous voulez capturer 100 instantanés, à raison d’un instantané toutes les 5 minutes. Deux solutions s’offrent à vous :

  • Vous pouvez émettre une commande NetStream.attachCamera(myCamera, 500) à 100 reprises, toutes les 5 minutes. L’enregistrement prend 500 minutes, mais le fichier résultant est lu en 50 secondes (100 images, 500 millisecondes entre elles).
  • Vous pouvez émettre une commande Camera.setMode() en réglant fps sur 1/300 (une image toutes les 300 secondes, autrement dit, toutes les 5 minutes), puis une commande NetStream.attachCamera(source), en laissant la caméra capturer des images en continu pendant 500 minutes. Il faudra 500 minutes pour lire le fichier produit ; en d’autres termes autant que pour l’enregistrer, chaque image étant affichée pendant 5 minutes.

Ces deux techniques capturent les mêmes 500 images et les deux sont utiles. Votre choix doit être déterminé principalement par le type de lecture souhaité. Dans le second cas, par exemple, vous pourriez enregistrer du son en même temps. Par ailleurs, les deux fichiers feraient environ la même taille.

attach Joint un flux à un nouvel objet NetConnection.connectionflash.net:NetConnection Joint un flux à un nouvel objet NetConnection. Appelez cette méthode pour associer un NetStream à un nouvel objet NetConnection après l’abandon, puis le rétablissement d’une connexion. Flash Player et AIR reprennent la diffusion en continu à partir du point où s’est arrêtée la lecture lorsque la connexion a été perdue. Vous pouvez également utiliser cette méthode pour procéder à un équilibrage de charge.

Cette méthode requiert Flash Media Server version 3.5.3 ou ultérieure.

Si vous souhaitez utiliser cette méthode pour procéder à la reconnexion du flux de données, voir la documentation de Flash Media Server 3.5.3.

Si vous souhaitez utiliser cette méthode pour l’équilibrage de charge, procédez comme suit :

  1. Associez un flux connecté à un objet NetConnection sur un autre serveur.
  2. Une fois que le flux est correctement associé à la nouvelle connexion, appelez NetConnection.close() sur la connexion précédente pour empêcher les fuites de données.
  3. Appelez NetStream.play2() et définissez la valeur de NetStreamPlayOptions.transition sur RESUME. Définissez le reste des propriétés NetStreamPlayOptions sur les mêmes valeurs que vous avez utilisées lors de l’appel initial de la méthode NetStream.play() ou NetStream.play2() pour lancer le flux.
play2()NetStreamPlayOptions.transition
close Arrête la lecture des données du flux, définit la propriété time sur 0 et met le flux à disposition. Arrête la lecture des données du flux, définit la propriété time sur 0 et met le flux à disposition. Cette méthode supprime également la copie locale d’un fichier vidéo téléchargé via HTTP. Même si l’application supprime la copie locale du fichier qu’il crée, une copie peut subsister dans le répertoire cache. Si vous devez empêcher toute mise en cache ou tout stockage local du fichier vidéo, utilisez Flash Media Server.

Avec Flash Media Server, cette méthode est invoquée implicitement lorsque vous appelez NetStream.play() depuis un flux de publication ou NetStream.publish() depuis un flux d’abonnement. Veuillez noter que :

  • Si close() est appelée depuis un flux de publication, le flux arrête la publication et l’éditeur peut alors utiliser ce flux dans un autre but. Les abonnés ne reçoivent plus aucun élément publié sur ce flux, car ce dernier a arrêté la publication.
  • Si close() est appelée depuis un flux d’abonnement, le flux arrête la lecture pour l’abonné et ce dernier peut utiliser ce flux dans un autre but. Les autres abonnés ne sont pas affectés.
  • Vous pouvez arrêter la lecture d’un flux d’abonnement sans fermer le flux ou modifier le type de flux en utilisant flash.net.NetStream.play(false).
pause()play()publish()
onPeerConnect Invoqué lorsqu’un flux d’homologue éditeur correspond à un flux d’homologue abonné.Booleansubscriberflash.net:NetStream Invoqué lorsqu’un flux d’homologue éditeur correspond à un flux d’homologue abonné. Avant que l’abonné ne soit connecté à l’éditeur, appelez cette méthode pour permettre au code ActionScript de contrôler l’accès en vue d’une publication homologue à homologue. Le code suivant montre un exemple de création d’une fonction de rappel pour cette méthode : var c:Object = new Object; c.onPeerConnect = function(subscriber:NetStream):Boolean { if (accept) return true; else return false; }; m_netStream.client = c;

Si l’éditeur homologue n’implémente pas cette méthode, tous les homologues sont autorisés à lire tout contenu publié.

pause Interrompt la lecture d’un flux vidéo. Interrompt la lecture d’un flux vidéo. L’appel de cette méthode n’a aucune incidence si la vidéo est déjà en pause. Pour reprendre la lecture d’une vidéo après une pause, appelez resume(). Pour basculer entre la pause et la lecture (en commençant par mettre la vidéo en pause, puis en reprenant la lecture), appelez togglePause().

Depuis Flash Player 9.0.115.0, le lecteur n’efface plus la mémoire tampon lors de l’appel de NetStream.pause(). Ce comportement est appelé pause intelligente. Avant Flash Player 9.0.115.0, le lecteur attendait le remplissage du tampon avant de reprendre la lecture, ce qui entraînait souvent des retards.

Remarque : pour assurer la compatibilité descendante, l’événement"NetStream.Buffer.Flush" (voir la propriété NetStatusEvent.info) est toujours déclenché, bien que le serveur ne vide pas la mémoire tampon.

En cas d’interruption unique, la propriété NetStream.bufferLength possède une limite de 60 secondes ou de deux fois la valeur de NetStream.bufferTime (la limite supérieure est prise en compte). Par exemple, si la propriété bufferTime est de 20 secondes, Flash Player effectue la mise en mémoire tampon jusqu’à ce que la propriété NetStream.bufferLength corresponde à la valeur la plus élevée de 20~~2 (c’est-à-dire 40), ou à la valeur 60 ; dans ce cas, Flash Player effectue la mise en mémoire tampon jusqu’à ce que la valeur de bufferLength corresponde à 60. Si la propriété bufferTime est de 40 secondes, Flash Player effectue la mise en mémoire tampon jusqu’à ce que la propriété bufferLength corresponde à la valeur la plus élevée de 40~~2 (c’est-à-dire 80), ou à la valeur 60 ; dans ce cas, Flash Player effectue la mise en mémoire tampon jusqu’à ce que la valeur de bufferLength corresponde à 80.

La propriété bufferLength possède en outre une limite absolue. Si un appel à pause() provoque l’augmentation de bufferLength de plus de 600 secondes, ou la valeur de plus élevée de bufferTime ~~ 2, Flash Player efface le contenu de la mémoire tampon et remet à zéro bufferLength. Par exemple, si la propriété bufferTime est de 120 secondes, Flash Player efface le contenu de la mémoire tampon si la propriété bufferLength atteint 600 secondes ; si bufferTime est de 360 secondes, Flash Player efface le contenu de la mémoire tampon si bufferLength atteint 720 secondes.

Conseil : vous pouvez utiliser NetStream.pause() dans le code pour mettre les données en mémoire tampon pendant que les spectateurs regardent une annonce publicitaire, par exemple, puis annuler l’interruption lorsque la vidéo principale démarre.

close()play()resume()togglePause()bufferLengthbufferTimeflash.events.NetStatusEvent.info
play2 Commute en toute transparence les fichiers dont les vitesses de transmission sont différentes et permet la reprise d’un NetStream lorsque la connexion est abandonnée, puis rétablie.paramflash.net:NetStreamPlayOptions Commute en toute transparence les fichiers dont les vitesses de transmission sont différentes et permet la reprise d’un NetStream lorsque la connexion est abandonnée, puis rétablie.

Cette méthode est une version améliorée de NetStream.play(). Comme la méthode play(), la méthode play2() commence la lecture d’un fichier multimédia ou met des fichiers multimédia en file d’attente pour créer une liste de lecture. Lorsqu’elle est utilisée avec Flash Media Server, elle peut également demander au serveur de basculer vers un autre fichier multimédia. La transition est transparente dans l’application client. Les fonctionnalités suivantes utilisent la commutation de flux play2() :

Diffusion dynamique en continu

La diffusion dynamique en continu (prise en charge dans Flash Media Server 3.5 et les versions ultérieures) fournit un flux codé à des vitesses de transmission différentes. A mesure que les conditions de réseau d’un spectateur changent, ce dernier reçoit la vitesse de transmission qui fournit les meilleures conditions d’affichage. Utilisez la classe NetStreamInfo pour gérer les conditions du réseau et changer de flux en fonction des données. Vous pouvez également changer de flux pour des clients ayant des capacités différentes. Pour plus d’informations, voir la section « Diffusion dynamique en continu » dans le « Guide du développeur d’Adobe Flash Media Server ».

Adobe a conçu une classe ActionScript personnalisée appelée DynamicStream qui étend la classe NetStream. Vous pouvez utiliser la classe DynamicStream pour implémenter la diffusion dynamique en continu dans une application au lieu d’écrire votre propre code afin de détecter les conditions du réseau. Même si vous choisissez d’écrire votre propre code de diffusion en continu dynamique, utilisez la classe DynamicStream comme exemple d’implémentation. Téléchargez la classe et la documentation de la classe depuis la page Flash Media Server tools and downloads.

Reconnexion du flux de données

La reconnexion du flux de données (prise en charge dans Flash Media Server 3.5.3 et les versions ultérieures) permet d’utiliser le média sans interruption, même lorsque la connexion est perdue. Le média utilise la mémoire tampon pour poursuivre la lecture tandis que votre logique ActionScript se reconnecte à Flash Media Server. Une fois la connexion rétablie, appelez NetStream.attach() pour utiliser le même objet NetStream avec le nouveau NetConnection. Utilisez les API NetStream.attach(), NetStreamPlayTransitions.resume et NetStreamPlayTrasitions.APPEND_AND_WAIT pour reconnecter un flux de données. Pour plus d’informations, voir la documentation de Flash Media Server 3.5.3.

play()attach()NetStreamPlayOptionsNetStreamPlayTransitions
play Lit un fichier multimédia à partir d’un répertoire local ou d’un serveur Web ; lit un fichier multimédia ou un flux en direct depuis Flash Media Server.Les fichiers SWF locaux et non approuvés ne peuvent pas communiquer avec Internet. Pour contourner cette restriction, reclassifiez le fichier SWF en tant que fichier local avec accès au réseau ou en tant que fichier approuvé. SecurityErrorSecurityErrorIl est nécessaire de spécifier au moins un paramètre. ArgumentErrorArgumentErrorL’objet NetStream n’est pas valide. Cela peut être dû à un échec de NetConnection. ErrorErrorarguments

Lire un fichier local

Emplacement d’un fichier multimédia. Cet argument peut être une chaîne, une propriété URLRequest.url ou une variable référençant l’une ou l’autre. Dans Flash Player et dans le contenu AIR hors du sandbox de sécurité de l’application, vous pouvez lire les fichiers vidéo locaux stockés dans le même répertoire que le fichier SWF ou dans un sous-répertoire. Vous ne pouvez toutefois pas naviguer vers un répertoire de niveau supérieur.

Dans le cas de contenu AIR dans le sandbox de sécurité de l’application, le chemin que vous spécifiez pour le fichier multimédia est relatif au répertoire du fichier SWF. Vous ne pouvez toutefois pas naviguer en dehors du répertoire du fichier SWF. Ne spécifiez pas un chemin d’accès complet, car AIR le considère comme un chemin relatif.

Lire un fichier à partir de Flash Media Server

NomObligatoireDescriptionname:ObjectObligatoire Nom d’un fichier enregistré, un identifiant des données en direct publiées par NetStream.publish() ou false. Si false, le flux arrête la lecture et tout paramètre supplémentaire est ignoré. Pour plus d’informations sur la syntaxe du nom de fichier, voir le tableau répertoriant les formats de fichier ci-après.start:NumberFacultatif Renvoie l’instant de départ, en secondes. Les valeurs autorisées sont -2, -1, 0 ou un nombre positif. La valeur par défaut est -2, qui recherche un flux en direct, puis un flux enregistré, et ouvre un flux en direct lorsqu’il ne trouve ni l’un ni l’autre. Si -1, lit uniquement un flux en direct. Si 0 ou un nombre positif, lit un flux enregistré en commençant par start en secondes. len:Number Facultatif si start est spécifié. Durée de la lecture, en secondes. Les valeurs autorisées sont -1, -0 ou un nombre positif. La valeur par défaut est -1, qui lit un flux en direct ou enregistré jusqu’à la fin. Si 0, lit une unique image de start secondes par rapport au début d’un flux enregistré. S’il s’agit d’un nombre positif, lit un flux en direct ou enregistré pendant len secondes. reset:Object Facultatif si len est spécifié. Indique si une liste de lecture doit être effacée. La valeur par défaut est 1 ou true, qui efface tous les appels play précédents et lit name immédiatement. Si 0 ou false, ajoute le flux dans une liste de lecture. Si 2, conserve la liste de lecture et renvoie tous les messages du flux en une seule opération, plutôt que par intervalles. Si 3, efface la liste de lecture et renvoie tous les messages du flux en une seule opération.

Vous pouvez lire les formats de fichier décrits dans le tableau suivant. La syntaxe varie selon le format de fichier.

Format de fichierSyntaxeExempleFLVSpécifiez le nom du flux (dans le répertoire "samples") en tant que chaîne sans extension de nom de fichier.ns.play("samples/myflvstream");mp3 or ID3Spécifiez le nom du flux en tant que chaîne (dans le répertoire "samples"), avec le préfixe mp3: ou id3: sans extension de nom de fichier.

ns.play("mp3:samples/mymp3stream");

ns.play("id3:samples/myid3data");

Fichiers basés sur le format MPEG-4 (F4V et MP4, entre autres)Spécifiez le nom du flux en tant que chaîne (dans le répertoire "samples") avec le préfixe mp4:. Le préfixe indique au serveur que le fichier contient des données vidéo H. 264 et des données audio AAC au format conteneur MPEG-4 Part 14. Si le fichier sur le serveur possède une extension de fichier, indiquez-la.

ns.play("mp4:samples/myvideo.f4v");

ns.play("mp4:samples/myvideo.mp4");

ns.play("mp4:samples/myvideo");

ns.play("mp4:samples/myvideo.mov");

RAWSpécifiez le nom du flux (dans le répertoire "samples") en tant que chaîne, avec le préfixe raw:.ns.play("raw:samples/myvideo");

Activer le mode Génération de données

Pour activer le mode de génération de données, transmettez la valeur null à un objet NetStream créé sur un objet NetConnection connecté à null. Dans ce mode, appelez appendBytes() pour transmettre les données à l’objet NetStream. (Transmettre null réinitialise également le compteur d’octets pour le rappel de onSeekPoint().)

Lit un fichier multimédia à partir d’un répertoire local ou d’un serveur Web ; lit un fichier multimédia ou un flux en direct depuis Flash Media Server. Distribue un objet NetStatusEvent pour signaler les messages d’état et les messages d’erreur.

Pour plus d’informations sur les codecs et les formats de fichier pris en charge, voir les références suivantes :

  • Documentation de Flash Media Server
  • Exploration de la prise en charge de Flash Player pour l’audio AAC et la vidéo H.264 haute définition
  • FLV/F4V open specification documents (disponible en anglais uniquement)

Flux de travail pour la lecture d’un fichier ou d’un flux en direct

  1. Créez un objet NetConnection et appelez NetConnection.connect().

    Pour lire un fichier à partir d’un répertoire local ou d’un serveur Web, transmettez la valeur null.

    Pour lire un fichier enregistré ou un flux en direct depuis Flash Media Server, transmettez l’URI d’une application de Flash Media Server.

  2. Appelez NetConnection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler) pour écouter les événements NetStatusEvent.
  3. Sur l’événement "NetConnection.Connect.Success", créez un objet NetStream et transmettez l’objet NetConnection au constructeur.
  4. Créez un objet Video, puis appelez Video.attachNetStream() et transmettez l’objet NetStream.
  5. Appelez NetStream.play().

    Pour lire un flux en direct, transmettez le nom du flux transmis à la méthode NetStream.publish().

    Pour lire un fichier enregistré, transmettez le nom du fichier.

  6. Appelez addChild() et transmettez l’objet Video pour afficher la vidéo.

Remarque : pour voir l’exemple de code, faites défiler la page jusqu’à l’exemple situé dans la partie inférieure.

Activer le mode Génération de données

Appelez play(null) pour activer le « mode de génération de données ». Dans ce mode, appelez la méthode appendBytes() pour transmettre les données à l’objet NetStream. Utilisez le mode de génération de données pour diffuser du contenu via HTTP depuis le module original de diffusion en continu dynamique HTTP d’Adobe sur un serveur HTTP Apache. La diffusion en continu HTTP dynamique permet aux clients de rechercher rapidement un point dans un fichier. Open Source Media Framework (OSMF) prend en charge la diffusion en continu dynamique pour les flux en direct et de vidéo à la demande. Pour obtenir des exemples d’utilisation du mode de génération de données Netstream, téléchargez la source OSMF. Pour plus d’informations sur la diffusion en continu HTTP dynamique, voir la section Diffusion en continu HTTP dynamique.

Lorsque vous utilisez cette méthode sans Flash Media Server, il existe certaines contraintes de sécurité. Un fichier , placé dans le sandbox local approuvé ou local avec accès au réseau, peut charger et lire un fichier vidéo à partir du sandbox distant. Cependant, il ne peut pas accéder aux données de ce fichier distant sans une autorisation explicite, accordée sous forme de fichier de régulation d’URL. Vous pouvez en outre empêcher un fichier SWF s’exécutant dans Flash Player d’utiliser cette méthode ; pour cela, vous devez définir le paramètre allowNetworking des balises object et embed dans la page HTML qui intègre 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).

Flash Media Server Cet exemple lit un fichier F4V enregistré (dans le répertoire "samples"), en commençant au début, pendant 100 secondes au maximum. Avec les fichiers MPEG-4, si le fichier sur le serveur dispose d’une extension de nom de fichier, la méthode play() doit spécifier une extension de nom de fichier. ns.play("mp4:samples/record1.f4v", 0, 100, true); Flash Media Server Cet exemple lit un flux FLV en direct publié par un client, du début à la fin, en commençant immédiatement : ns.play("livestream"); L’exemple suivant indique comment charger un fichier FLV externe : var MyVideo:Video = new Video(); addChild(MyVideo); var MyNC:NetConnection = new NetConnection(); MyNC.connect(null); var MyNS:NetStream = new NetStream(MyNC); MyNS.play("http://www.helpexamples.com/flash/video/clouds.flv"); MyVideo.attachNetStream(MyNS); //the clouds.flv video has metadata we're not using, so create //an error handler to ignore the message generated by the runtime //about the metadata MyNS.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler); function asyncErrorHandler(event:AsyncErrorEvent):void { //ignore metadata error message }
DisplayObjectContainer.addChild()checkPolicyFileappendBytes()statusflash.events:StatusEventDistribué lors d’une tentative de lecture d’un fichier chiffré à l’aide de la gestion des droits numériques (DRM). La valeur de la propriété code est "DRM.encryptedFLV". Distribué lors d’une tentative de lecture d’un fichier chiffré à l’aide de la gestion des droits numériques (DRM).
preloadEmbeddedData Extrait les métadonnées DRM d’un fichier multimédia enregistré localement.paramflash.net:NetStreamPlayOptionsUn objet NetStreamPlayOptions décrivant les options à utiliser lors du traitement du fichier de contenu. Extrait les métadonnées DRM d’un fichier multimédia enregistré localement.

Utilisez tout d’abord preloadEmbeddedMetaData() lors du téléchargement et de la mise en mémoire cache des vouchers DRM nécessaires à la lecture hors ligne. Lorsque des métadonnées DRM intégrées sont détectées dans un fichier multimédia, un objet DRMContentData est transmis à la fonction onDRMContentData du client NetStream. Cet objet DRMContentData contient les informations nécessaires à l’obtention du voucher requis pour lire le contenu. Transmettez DRMContentDataObject à la méthode DRMManager loadVoucher() pour télécharger le voucher.

Les étapes pour précharger un voucher DRM sont les suivantes :

  • Créez un nouvel objet NetStream pour précharger les métadonnées.

  • Affectez une fonction de rappel à la propriété onDRMContentData du client NetStream.
  • Créez un nouvel objet NetStreamPlayOptions, puis définissez la propriété streamName sur la chaîne URL du fichier vidéo local.
  • Appelez preloadEmbeddedMetadata(), tout en transmettant l’objet NetStreamPlayOptions.
  • En réponse au rappel onDRMContentData, appelez la méthode loadVoucher() de DRMManager, tout en transmettant l’objet DRMContentData. Si la propriété authenticationMethod de l’objet DRMContentData est définie sur la valeur userNameAndPassWord, authentifiez l’utilisateur sur le serveur de droits multimédias avant de charger le voucher.
  • Fermez l’objet NetStream avant le préchargement.

Remarque : si vous souhaitez utiliser le même objet NetStream pour précharger les métadonnées et lire le contenu, attendez l’appel de onPlayStatus généré par l’opération de préchargement avant de commencer la lecture.

Les vouchers téléchargés sont stockés dans une mémoire cache locale. La lecture de contenu en ligne permet également de télécharger et de mettre en cache les vouchers. Lors de la visualisation d’un fichier dont le contenu est protégé par DRM, un voucher mis en cache est automatiquement récupéré à partir du magasin local. Utilisez DRMManager pour gérer la mémoire cache du voucher.

Remarques : le préchargement des métadonnées DRM via une connexion HTTP, HTTPS ou RTMP n’est pas pris en charge. Vous ne pouvez précharger des métadonnées qu’à partir de fichiers enregistrés sur le systèmes de fichiers.

onDRMContentDataflash.net.drm.DRMContentDataflash.net.drm.DRMManager.loadVoucher()flash.net.drm.DRMVoucherclient
publish Envoie des données audio et vidéo, ainsi que des messages de données en diffusion continue à partir d’un client et à destination de Flash Media Server, tout en laissant la possibilité d’enregistrer ce flux pendant la transmission.nameStringnullChaîne identifiant le flux continu. Les clients qui s’abonnent à ce flux continu transmettent ce nom lorsqu’ils appellent NetStream.play(). N’ajoutez pas une « / » après le nom du flux. Par exemple, n’utilisez pas le nom de flux "bolero/".

Vous pouvez enregistrer les fichiers dans les formats décrits dans le tableau suivant (impossible d'utiliser publish() pour les fichiers au format MP3). La syntaxe varie selon le format de fichier.

Format de fichierSyntaxeExempleFLVSpécifiez le nom du flux en tant que chaîne, sans extension de nom de fichier.ns.publish("myflvstream");Fichiers basés sur le format MPEG-4 (F4V ou MP4, entre autres)Spécifiez le nom du flux en tant que chaîne, avec le préfixe mp4: avec ou sans extension de nom de fichier. Flash Player n’autorise pas le codage avec H. 264, mais Flash Media Server peut enregistrer n’importe quel codec dans le conteneur F4V. Flash Media Live Encoder autorise le codage avec H. 264. ns.publish("mp4:myvideo.f4v") ns.publish("mp4:myvideo");RAWSpécifiez le nom du flux en tant que chaîne, avec le préfixe raw:.ns.publish("raw:myvideo");

typeStringnullChaîne spécifiant le mode de publication du flux continu. Les valeurs valides sont "record", "append", "appendWithGap" et "live". La valeur par défaut est live.
  • Si vous transmettez "record", le serveur publie et enregistre des données en direct ; les données enregistrées sont placées dans un nouveau fichier dont le nom correspond à la valeur transmise au paramètre name. Si le fichier existe déjà, il est remplacé.
  • Si vous transmettez "append", le serveur publie et enregistre des données en direct, qu’il ajoute à un fichier dont le nom correspond à la valeur transmise au paramètre name. Si aucun fichier correspondant au paramètre name n’est détecté, un fichier est créé.
  • Si vous transmettez "appendWithGap", des informations supplémentaires sur la coordination temporelle sont transmises afin que le serveur puisse déterminer le point de transition correct lors de la diffusion dynamique en continu.
  • Si vous omettez ce paramètre ou utilisez "live", le serveur publie des données en direct sans les enregistrer. Si un fichier dont le nom correspond à la valeur transmise au paramètre name existe, il est supprimé.
Envoie des données audio et vidéo, ainsi que des messages de données en diffusion continue à partir d’un client et à destination de Flash Media Server, tout en laissant la possibilité d’enregistrer ce flux pendant la transmission. Cette méthode distribue un objet NetStatusEvent avec des informations sur le flux continu. Avant d’appeler NetStream.publish(), capturez l’événement "NetConnection.Connect.Success"pour vérifier que l’application s’est correctement connectée à Flash Media Server.

Lors de la publication, vous pouvez enregistrer les fichiers au format FLV ou F4V. Si vous enregistrez un fichier au format F4V, utilisez un outil d’aplatissement pour modifier ou lire le fichier dans une autre application. Pour télécharger l’outil, voir www.adobe.com/go/fms_tools_fr.

Remarque : n’utilisez pas cette méthode pour lire un flux de données. Pour lire un flux de données, appelez la méthode NetStream.play().

Flux de travail pour la publication d’un flux de données

  1. Créez un objet NetConnection et appelez NetConnection.connect().
  2. Appelez NetConnection.addEventListener() pour écouter les événements NetStatusEvent.
  3. Sur l’événement "NetConnection.Connect.Success", créez un objet NetStream et transmettez l’objet NetConnection au constructeur.
  4. Pour capturer du son et des images, appelez les méthodes NetStream.attachAudio() et NetStream.attachCamera().
  5. Pour publier un flux, appelez la méthode NetStream.play(). Vous pouvez enregistrer les données au fur et à mesure que vous les publiez afin que les utilisateurs puissent les lire ultérieurement.

Remarque : un objet NetStream peut soit publier soit lire un flux de données, mais il ne peut pas effectuer ces deux opérations simultanément. Pour publier un flux de données et afficher la lecture à partir du serveur, créez deux objets NetStream. Vous pouvez envoyer plusieurs objets NetStream sur un seul objet NetConnection.

Lorsque Flash Media Server enregistre un flux de données, il crée un fichier. Par défaut, le serveur crée un répertoire avec le nom de l’occurrence de l’application transmis à NetConnection.connect() et stocke le fichier dans ce répertoire. Par exemple, le code suivant établit la connexion à l’occurrence par défaut de l’application « lectureseries » et enregistre un flux de données nommé « lecture ». Le fichier « lecture.flv » est enregistré dans le répertoire applications/lectureseries/streams/_definst_ :

var nc:NetConnection = new NetConnection(); nc.connect("rtmp://fms.example.com/lectureseries"); nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); function netStatusHandler(event:NetStatusEvent):void{ if (event.info.code == "NetConnection.Connect.Success"){ var ns:NetStream = new NetStream(nc); ns.publish("lecture", "record"); } }

L’exemple suivant se connecte à l’occurrence de "monday" de la même application. Le fichier « lecture.flv » est enregistré dans le répertoire /applications/lectureseries/streams/monday :

var nc:NetConnection = new NetConnection(); nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); nc.connect("rtmp://fms.example.com/lectureseries/monday"); function netStatusHandler(event:NetStatusEvent):void{ if (event.info.code == "NetConnection.Connect.Success"){ var ns:NetStream = new NetStream(nc); ns.publish("lecture", "record"); } }
L’exemple suivant capture des données vidéo à partir d’une caméra et les publie via un flux de réseau sur Flash Media Server. Cet exemple affiche les données vidéo au fur et à mesure que Flash Media Server les lit.

Pour exécuter cet exemple, vous avez besoin d’une caméra reliée à votre ordinateur. Vous devez également ajouter un composant Button et un composant Label à la bibliothèque.

L’application dispose d’un bouton qui publie un flux (l’envoie à Flash Media Server) uniquement lorsque l’application est correctement connectée au serveur. L’application lit le flux du serveur uniquement lorsque le flux a été correctement publié. L’événement NetStatusEvent renvoie un objet info avec une propriété code qui spécifie ces cas. La fonction netStatusHandler gère ces événements pour les classes NetConnection et NetStream.

package { import flash.display.Sprite; import flash.events.*; import flash.media.Video; import flash.media.Camera; import flash.net.NetConnection; import flash.net.NetStream; import fl.controls.Button; import fl.controls.Label; public class NetStream_publish extends Sprite { private var connectionURL:String = "rtmp://localhost/live/"; private var videoURL:String = "liveVideo"; private var nc:NetConnection; private var ns_publish:NetStream; private var ns_playback:NetStream; private var video_publish:Video; private var video_playback:Video; private var cam:Camera; private var b:Button; private var l:Label; public function NetStream_publish() { setUpUI(); nc = new NetConnection(); nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); // Add bandwidth detection handlers on the NetConnection Client to // prevent Reference Errors at runtime when using the "live" and "vod" applications. var clientObj:Object = new Object(); clientObj.onBWDone = onBWDone; clientObj.onBWCheck = onBWCheck; nc.client = clientObj; // Connect to the "live" application on Flash Media Server. nc.connect(connectionURL); } private function netStatusHandler(event:NetStatusEvent):void { trace(event.info.code + " | " + event.info.description); switch (event.info.code) { case "NetConnection.Connect.Success": // Enable the "Publish" button after the client connects to the server. b.enabled = true; break; case "NetStream.Publish.Start": playbackVideo(); break; } } private function publishVideo(event:MouseEvent):void{ // Disable the button so that you can only publish once. b.enabled = false; // Create a NetStream to send video to FMS. ns_publish = new NetStream(nc); ns_publish.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); // Publish (send) the video to FMS. cam = Camera.getCamera(); ns_publish.attachCamera(cam); ns_publish.publish(videoURL); } private function playbackVideo():void { // Create a NetStream to receive the video from FMS. ns_playback = new NetStream(nc); ns_playback.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); ns_playback.play(videoURL); // Display the video that was published to FMS. video_playback = new Video(cam.width, cam.height); video_playback.x = cam.width + 20; video_playback.y = 10; video_playback.attachNetStream(ns_playback); addChild(video_playback); } private function setUpUI():void { b = new Button(); b.addEventListener(MouseEvent.CLICK, publishVideo); b.width = 150; b.label = "Publish video to server"; b.move(10, 150); b.enabled = false; l = new Label(); l.width = 150; l.text = "Playing back from server" l.move(190, 150); addChild(b); addChild(l); } // Handlers called by the Flash Media Server "live" and "vod" applications. public function onBWDone(... rest):Boolean { return true; } public function onBWCheck(... rest):Number { return 0; } } }
flash.net.NetConnection.connect()flash.events.NetStatusEvent.info
receiveAudio Indique si les données audio entrantes sont lues dans le flux continu.flagBooleanSpécifie si les données audio entrantes sont lues dans le flux (true) ou non (false). La valeur par défaut est true. Si le flux continu spécifié contient uniquement des données audio, NetStream.time cesse d’augmenter lorsque vous transmettez false. Indique si les données audio entrantes sont lues dans le flux continu. Cette méthode n’est accessible qu’aux clients abonnés au flux spécifié. L’éditeur du flux n’y a pas accès. Appelez cette méthode avant ou après l’appel de la méthode NetStream.play(). Par exemple, associez cette méthode à un bouton pour permettre aux utilisateurs de désactiver et de réactiver le son. Utilisez cette méthode uniquement sur les flux de données en monodiffusion lus à partir de Flash Media Server. Cette méthode ne fonctionne pas sur les flux de données en multidiffusion RTMFP ou lors de l’utilisation de la méthode NetStream.appendBytes(). receiveVideoFPS Indique la cadence des données vidéo entrantes.FPSNumberIndique le nombre d’images par seconde lors de la lecture des données vidéo entrantes. Indique la cadence des données vidéo entrantes. Cette méthode n’est accessible qu’aux clients abonnés au flux spécifié. L’éditeur du flux n’y a pas accès. Appelez cette méthode avant ou après l’appel de la méthode NetStream.play(). Par exemple, appelez cette méthode pour permettre aux utilisateurs de la cadence vidéo. Pour déterminer la cadence actuelle, utilisez NetStream.currentFPS. Pour interrompre la réception des données vidéo, transmettez 0.

Lorsque vous transmettez une valeur au paramètre FPS en vue de limiter la cadence de la vidéo, Flash Media Server tente de réduire la cadence tout en préservant l’intégrité de la vidéo. Entre deux images-clés, le serveur envoie le nombre minimum d’images nécessaires pour répondre à la cadence spécifiée. Notez que les images intermédiaires doivent être envoyées conjointement, auquel cas la vidéo est endommagée. Par conséquent, le nombre d’images souhaité est envoyé immédiatement et conjointement après une image-clé. Etant donné que les images ne sont pas distribuées uniformément, le mouvement entre images uniques est homogène, mais des interruptions apparaissent entre les séquences d’images.

Utilisez cette méthode uniquement sur les flux de données en monodiffusion lus à partir de Flash Media Server. Cette méthode ne fonctionne pas sur les flux de données en multidiffusion RTMFP ou lors de l’utilisation de la méthode NetStream.appendBytes().

receiveVideo Indique si les données vidéo entrantes sont lues sur le flux continu.flagBooleanIndique si les données vidéo entrantes de ce flux sont lues (true) ou non (false). La valeur par défaut est true. Si le flux continu spécifié contient uniquement des données vidéo, NetStream.time cesse d’augmenter lorsque vous transmettez false. Indique si les données vidéo entrantes sont lues sur le flux continu. Cette méthode n’est accessible qu’aux clients abonnés au flux spécifié. L’éditeur du flux n’y a pas accès. Appelez cette méthode avant ou après l’appel de la méthode NetStream.play(). Par exemple, associez cette méthode à un bouton pour permettre aux utilisateurs d’afficher et de masquer la vidéo. Utilisez cette méthode uniquement sur les flux de données en monodiffusion lus à partir de Flash Media Server. Cette méthode ne fonctionne pas sur les flux de données en multidiffusion RTMFP ou lors de l’utilisation de la méthode NetStream.appendBytes(). resetDRMVouchers Supprime toutes les données du voucher de gestion de droits numériques (DRM) mises en cache localement.Les données du voucher ne peuvent pas être supprimées. IOErrorflash.errors:IOError Supprime toutes les données du voucher de gestion de droits numériques (DRM) mises en cache localement.

L’application doit à nouveau télécharger les vouchers requis depuis le serveur de droits multimédias afin que l’utilisateur puisse accéder au contenu protégé. Appeler cette fonction équivaut à appeler la fonction resetDRMVouchers() de l’objet DRMManager.

L’exemple suivant réinitialise tous les vouchers DRM : NetStream.resetDRMVouchers();
flash.net.drm.DRMManager.resetDRMVouchers()
resume Reprend la lecture d’un flux vidéo en pause. Reprend la lecture d’un flux vidéo en pause. Si la vidéo est en cours de lecture, l’appel de cette méthode n’a aucun effet. close()pause()play()togglePause()seek Recherche l’image-clé (également appelée Image-I dans l’industrie vidéo) la plus proche de l’emplacement spécifié.offsetNumberValeur de temps approximative, en secondes, à atteindre dans un fichier vidéo. Avec Flash Media Server, si la propriété <EnhancedSeek> est définie sur true dans le fichier de configuration Application.xml (configuration par défaut), le serveur génère une image-clé au décalage.
  • Pour revenir au début du flux continu, transmettez 0 pour offset.
  • Pour effectuer une recherche en partant du début du flux continu, transmettez le nombre de secondes à appliquer. Par exemple, pour placer la tête de lecture à 15 secondes du début (ou sur l’image-clé avant 15 secondes), utilisez myStream.seek(15).
  • Pour faire une recherche par rapport à la position actuelle, transmettez NetStream.time + n ou NetStream.time - n pour rechercher n secondes vers l’avant ou l’arrière, par rapport à la position actuelle. Par exemple, pour revenir en arrière de 20 secondes par rapport à la position actuelle, utilisez NetStream.seek(NetStream.time - 20).
Recherche l’image-clé (également appelée Image-I dans l’industrie vidéo) la plus proche de l’emplacement spécifié. L’image-clé est placée à un décalage, en secondes, depuis le début du flux.

Les flux vidéo sont généralement encodés avec deux types d’image, les images-clés (ou images I) et les images P. Une image-clé contient l’ensemble de l’image, alors qu’une image P est une image intérimaire qui fournit des informations vidéo supplémentaires entre les images-clé. Un flux vidéo présente généralement une image-clé toutes les 10 à 50 images.

Flash Media Server dispose de plusieurs types de comportements de recherche : la recherche améliorée et la recherche dynamique.

Recherche améliorée

Par défaut, la recherche améliorée est activée. Pour désactiver la recherche améliorée, ouvrez Flash Media Server, puis définissez l’élément EnhancedSeek dans le fichier de configuration application.xml sur false.

Si la recherche améliorée est activée, le serveur génère une nouvelle image-clé au niveau du décalage en fonction de l’image-clé précédente et de toute image P intermédiaire. Cela peut toutefois créer une charge de traitement élevée sur le serveur et une distorsion peut survenir dans l’image-clé générée. Si le codec vidéo est On2, l’image-clé située avant le point de recherche, ainsi que toute image P située entre l’image-clé et le point de recherche sont envoyées au client.

Si la recherche améliorée est désactivée, le serveur commence la diffusion en continu à partir de l’image-clé la plus proche. Par exemple, supposons qu’une vidéo présente des images-clés à 0 et 10 secondes. Une recherche de 4 secondes entraîne un démarrage de la lecture à 4 secondes à l’aide de l’image-clé à 0 seconde. La vidéo demeure figée jusqu’à ce qu’elle atteigne la prochaine image-clé placée à 10 secondes. Pour améliorer les recherches, vous devez réduire l’intervalle des images-clés. En mode de recherche normal, vous ne pouvez pas démarrer la vidéo à un point placé entre les images-clés.

Recherche dynamique

Pour activer la recherche dynamique, définissez NetStream.inBufferSeek sur true.

La recherche dynamique permet à Flash Player d’effectuer des recherches dans une mémoire tampon d’arrière-plan et dans une mémoire tampon directe. Si la fonction de recherche dynamique est désactivée, chaque fois que la méthode seek() est appelée, Flash Player efface le contenu de la mémoire tampon et sollicite des données au serveur. Pour plus d’informations, voir NetStream.inBufferSeek.

Recherche en mode de génération de données

Lorsque vous appelez seek() sur un objet NetStream en mode de génération de données, tous les octets transmis à appendBytes() sont ignorés (non placés en mémoire tampon, accumulés dans la FIFO de messages partiels ou analysés pour les points de recherche) jusqu’à ce que vous appeliez appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN) ou appendBytesAction(NetStreamAppendBytesAction.RESET_SEEK) pour réinitialiser le programme d’analyse. Pour plus d’informations sur le mode de génération de données, voir NetStream.play().

inBufferSeekbackBufferLengthbackBufferTimestep()timeplay()
send Envoie un message sur le flux publié à tous les clients abonnés.handlerNameStringMessage à envoyer ; également le nom du gestionnaire ActionScript qui reçoit le message. Le nom du gestionnaire ne peut avoir qu’un seul niveau (autrement dit, il ne peut pas être au format parent/enfant) et est relatif à l’objet flux. N’utilisez pas un terme réservé comme nom du gestionnaire. Par exemple, l’attribution du nom "close" au gestionnaire entraîne l’échec de la méthode. Avec Flash Media Server, utilisez @setDataFrame pour ajouter une image-clé de métadonnées à un flux en direct ou @clearDataFrame pour supprimer une image-clé. argumentsLes arguments facultatifs peuvent être de n’importe quel type. Ils sont sérialisés et envoyés via la connexion, et le gestionnaire de destination les reçoit dans le même ordre. Si un paramètre représente un objet circulaire (une liste liée qui est circulaire, par exemple), l’utilitaire de sérialisation gère correctement les références. Avec Flash Media Server, si @setDataFrame est le premier argument, utilisez onMetaData comme second argument ; pour le troisième argument, transmettez une occurrence de Object ou Array possédant les métadonnées définies comme propriétés. Voir le Flash Media Server Developer Guide pour obtenir une liste des noms de propriété suggérés. Avec @clearDataFrame comme premier argument, utilisez onMetaData comme second argument et pas de troisième argument. Envoie un message sur le flux publié à tous les clients abonnés. Cette méthode n’est accessible qu’à l’éditeur du flux continu spécifié. Cette méthode est disponible uniquement avec Flash Media Server. Pour traiter et répondre à ce message, créer un gestionnaire sur l’objet NetStream, par exemple ns.HandlerName.

Flash Player ou AIR ne sérialise pas les méthodes ni leurs données, les variables de prototype d’objet ou les variables non énumérables. Pour les objets d’affichage, Flash Player AIR sérialise le chemin, mais pas les données.

Vous pouvez appeler la méthode send() pour ajouter des images-clés de données à un flux en direct publié sur Flash Media Server. Une image-clé de données est un message ajouté à un flux en direct par un éditeur. Les images-clés de données sont généralement utilisées pour ajouter des métadonnées à un flux en direct avant la capture des données pour le flux à partir de la caméra et du microphone. Un éditeur peut à tout moment ajouter une image-clé de données pendant la publication du flux. L’image-clé de données est enregistrée dans la mémoire du serveur tant que l’éditeur y est connecté.

Les clients abonnés au flux en direct avant l’ajout d’une image-clé de données reçoivent cette image-clé dès son ajout. Les clients qui s’abonnent au flux en direct après l’ajout de l’image-clé reçoivent cette image-clé lorsqu’ils s’abonnent.

Pour ajouter une image-clé de métadonnées dans un flux en direct envoyé à Flash Media Server, utilisez @setDataFrame comme nom de gestionnaire, suivi de deux arguments supplémentaires, tels que :

var ns:NetStream = new NetStream(nc); ns.send("@setDataFrame", "onMetaData", metaData);

L’argument @setDataFrame fait référence à un gestionnaire spécial intégré au Flash Media Server. L’argument onMetaData est le nom d’une fonction de rappel de votre application client qui écoute l’événement onMetaData et récupère les métadonnées. Le troisième élément, metaData, est une occurrence de Object ou d’Array dont les propriétés définissent les valeurs des métadonnées.

Utilisez @clearDataFrame pour effacer une image-clé de métadonnées déjà définie dans le flux :

ns.send("@clearDataFrame", "onMetaData");
L’exemple suivant crée deux objets NetStream. L’un est utilisé pour publier un flux en direct sur le serveur, l’autre s’abonne au flux. package { import flash.display.Sprite; import flash.net.NetConnection; import flash.net.NetStream; import flash.events.NetStatusEvent; import flash.media.Video; import flash.utils.setTimeout; public class TestExample extends Sprite { var nc:NetConnection = new NetConnection(); var ns1:NetStream; var ns2:NetStream; var vid:Video = new Video(300,300); var obj:Object = new Object(); public function TestExample() { nc.objectEncoding = 0; nc.addEventListener("netStatus", onNCStatus); nc.connect("rtmp://localhost/FlashVideoApp"); addChild(vid); } function onNCStatus(event:NetStatusEvent):void { switch (event.info.code) { case "NetConnection.Connect.Success": trace("You've connected successfully"); ns1 = new NetStream(nc); ns2 = new NetStream(nc); ns1.client = new CustomClient(); ns1.publish("dummy", "live"); ns2.play("dummy"); ns2.client = new CustomClient(); vid.attachNetStream(ns2); setTimeout(sendHello, 3000); break; case "NetStream.Publish.BadName": trace("Please check the name of the publishing stream" ); break; } } function sendHello():void { ns1.send("myFunction", "hello"); } } } class CustomClient { public function myFunction(event:String):void { trace(event); } } L’exemple suivant crée des métadonnées et les ajoute à un flux en direct : private function netStatusHandler(event:NetStatusEvent):void { switch (event.info.code) { case "NetStream.Publish.Start": var metaData:Object = new Object(); metaData.title = "myStream"; metaData.width = 400; metaData.height = 200; ns.send("&#64;setDataFrame", "onMetaData", metaData); ns.attachCamera( Camera.getCamera() ); ns.attachAudio( Microphone.getMicrophone() ); } } Pour répondre à une image-clé de données ajoutée à une vidéo, le client doit définir un gestionnaire d’événement onMetaData. Le gestionnaire d’événement onMetaData n’est pas enregistré avec addEventListener(), mais correspond à une fonction de rappel nommée onMetaData, par exemple : public function onMetaData(info:Object):void { trace("width: " + info.width); trace("height: " + info.height); } Cet exemple décrit la création d’une liste de lecture sur le serveur : // Create a NetStream for playing var my_ns:NetStream = new NetStream(my_nc); my_video.attachNetStream(my_ns); // Play the stream record1 my_ns.play("record1", 0, -1, true); // Switch to the stream live1 and play for 5 seconds. // Since reset is false, live1 will start to play after record1 is done. my_ns.play("live1", -1 , 5, false); Si le fichier vidéo enregistré contient uniquement des messages de données, vous pouvez soit le lire à la vitesse à laquelle il a été enregistré à l’origine, soit obtenir tous les messages de données en une seule opération. //To play at normal speed var my_ns:NetStream = new NetStream(my_nc); my_ns.play("log", 0, -1); //To get the data messages all at once my_ns.play("log", 0, -1, 3);
clientdataReliableplay()
setDRMAuthenticationCredentials Définit les informations d’authentification de la gestion des droits numériques nécessaires à l’affichage du contenu chiffré sous-jacent.userNameStringNom d’utilisateur valide. passwordStringMot de passe correspond au nom d’utilisateur fournit. typeStringChaîne indiquant le type d’informations d’authentification fournit. Les valeurs valides sont "drm" et "proxy". La valeur par défaut est "drm".
  • Pour le type d’authentification "drm", les informations d’identification indiquées sont comparées à Flash Access.
  • Dans le cas d’une authentification "proxy", les informations d’identification fournies sont authentifiées par rapport au serveur proxy et doivent correspondre avec celles requises par ce dernier. Par exemple, l’option "proxy" permet à une société d’authentifier l’application par rapport au serveur proxy avant que l’utilisateur n’accède à Internet. A moins qu’une authentification anonyme soit utilisée, après l’authentification proxy, l’utilisateur doit encore s’authentifier auprès de Flash Access afin d’obtenir le voucher et lire le contenu. Vous pouvez utiliser setDRMAuthenticationcredentials() une deuxième fois, avec l’option "drm", pour l’authentification auprès de Flash Access.
Définit les informations d’authentification de la gestion des droits numériques nécessaires à l’affichage du contenu chiffré sous-jacent.

La méthode setDRMAuthenticationCredentials() doit fournir des informations d’identification qui correspondent à celles reconnues et approuvées par le fournisseur de contenu ou le serveur proxy. Ces informations d’identification sont les mêmes que celles dont l’utilisateur a besoin pour obtenir l’autorisation d’afficher le contenu.

flash.events.DRMAuthenticateEvent
step Recule ou avance du nombre d’images spécifié à partir de l’image actuellement affichée.framesint Recule ou avance du nombre d’images spécifié à partir de l’image actuellement affichée. Spécifiez un nombre positif pour vous déplacer vers l’avant et un nombre négatif pour vous déplacer en sens inverse. Appelez cette méthode pour créer une fonctionnalité précise d’avance ou de retour rapide.

Cette méthode n’est disponible que lorsque les données sont diffusées en continu à partir de Flash Media Server 3.5.3 ou version ultérieure et lorsque NetStream.inBufferSeek est définie sur true. Par ailleurs, l’image cible doit se trouver dans la mémoire tampon. Par exemple, si l’image actuellement affichée est l’image numéro 120 et que vous spécifiez une valeur de 1000, cette méthode échoue si l’image numéro 1120 ne se trouve pas dans la mémoire tampon.

Cette méthode est conçue pour être utilisée avec la méthode pause() ou togglePause(). Si vous avancez ou reculez de 10 images pendant la lecture sans effectuer de pause, il est possible que vous ne détectiez pas cette opération ou qu’elle ressemble à une erreur. Par ailleurs, si vous appelez pause() ou togglePause le son est coupé.

Si l’appel de la méthode NetStream.étape() aboutit, un événement NetStatusEvent est envoyé avec "NetStream.Step.Notify" en tant que valeur de la propriété code de l’objet info.

inBufferSeekbackBufferTimebackBufferLengthbufferTimebufferLengthstep()seek()
togglePause Interrompt ou reprend la lecture d’un flux continu. Interrompt ou reprend la lecture d’un flux continu. Lorsque vous appelez cette méthode pour la première fois, la lecture est interrompue ; au prochain appel, la lecture reprend. Vous pouvez par exemple utiliser cette méthode pour permettre aux utilisateurs d’interrompre ou de reprendre la lecture par pression d’un seul bouton. close()play()pause()resume()CONNECT_TO_FMS Objet statique utilisé comme paramètre pour le constructeur d’une occurrence de NetStream.connectToFMSString Objet statique utilisé comme paramètre pour le constructeur d’une occurrence de NetStream. Il s’agit de la valeur par défaut du second paramètre du constructeur NetStream ; il n’est pas utilisé par l’application pour la lecture progressive. Lorsqu’il est utilisé, ce paramètre oblige le constructeur à se connecter à une occurrence de Flash Media Server. DIRECT_CONNECTIONS Crée une connexion d’éditeur homologue à homologue.directConnectionsString Crée une connexion d’éditeur homologue à homologue. Transmet cette chaîne pour le deuxième paramètre (facultatif) au constructeur d’une occurrence de NetStream. Avec cette chaîne, une application peut créer une connexion NetStream dans le but de publier du contenu audio et vidéo vers des clients. audioReliable Pour les connexions RTMFP, indique si le son est envoyé en toute fiabilité.Boolean Pour les connexions RTMFP, indique si le son est envoyé en toute fiabilité. Lorsque cette propriété est définie sur TRUE, toutes les données audio transmises sur ce NetStream sont totalement fiables. Si elle est définie sur FALSE, les données audio transmises ne sont pas totalement fiables ; elles sont retransmises pour une durée limitée, puis abandonnées. Vous pouvez utiliser la valeur FALSE pour réduire le temps d’attente au détriment de la qualité audio.

Si vous tentez de définir cette propriété sur FALSE sur un protocole réseau qui ne prend pas en charge la fiabilité partielle, la tentative est ignorée et la propriété est définie sur TRUE.

dataReliablevideoReliable
audioSampleAccess Pour les connexions RTMFP, indique si les abonnés homologue à homologue de ce flux de réseau sont autorisés à capturer le flux audio.Boolean Pour les connexions RTMFP, indique si les abonnés homologue à homologue de ce flux de réseau sont autorisés à capturer le flux audio. Lorsque la valeur FALSE est définie, l’abonné tente de capturer le flux audio pour afficher les erreurs d’autorisation. videoSampleAccessbackBufferLength Nombre de secondes des données précédemment affichées actuellement en cache pour le rembobinage et la lecture.Number Nombre de secondes des données précédemment affichées actuellement en cache pour le rembobinage et la lecture.

Cette propriété est disponible uniquement lorsque des données sont diffusées en flux continu à partir de Flash Media Server 3.5.3 ou version ultérieure. Pour plus d’informations sur Flash Media Server, voir la description de la classe.

Pour spécifier la quantité de données précédemment affichées mises en cache, utilisez la propriété Netstream.backBufferTime.

Pour éviter la mise en cache des données, définissez la propriété Netstream.inBufferSeek sur FALSE.

backBufferTimeinBufferSeek
backBufferTime Spécifie la quantité de données précédemment affichées que Flash Player tente de mettre en mémoire cache pour le rembobinage et la lecture, en secondes.Number Spécifie la quantité de données précédemment affichées que Flash Player tente de mettre en mémoire cache pour le rembobinage et la lecture, en secondes. La valeur par défaut est de 30 secondes pour les applications de bureau et de 3 secondes pour les applications mobiles.

Cette propriété est disponible uniquement lorsque des données sont diffusées en flux continu à partir de Flash Media Server 3.5.3 ou version ultérieure. Pour plus d’informations sur Flash Media Server, voir la description de la classe.

L’utilisation de cette propriété améliore les performances des opérations de rembobinage, car les données qui ont déjà été affichées ne sont pas à nouveau extraites du serveur. Au contraire, le flux continu lance la relecture depuis la mémoire tampon. Lors de la lecture, la diffusion en continu des données se poursuit depuis le serveur jusqu’à ce que la mémoire tampon soit pleine.

Si la position de rembobinage est plus éloignée que les données dans la mémoire cache, la mémoire tampon est nettoyée ; la diffusion en continu des données commence depuis le serveur à la position requise.

Pour utiliser cette propriété, définissez la propriété Netstream.inBufferSeek sur TRUE.

backBufferLengthbufferTimeinBufferSeek
bufferLength Nombre de secondes de données enregistrées dans la mémoire tampon.Number Nombre de secondes de données enregistrées dans la mémoire tampon. Vous pouvez utiliser cette propriété conjointement avec bufferTime pour estimer le niveau de remplissage du tampon ; par exemple, pour indiquer ce niveau à un utilisateur qui attend la fin du chargement des données dans le tampon. backBufferLengthbufferTimebytesLoadedbufferTimeMax Spécifie une longueur de mémoire tampon maximale pour le contenu de flux continu en direct, en secondes.Number Spécifie une longueur de mémoire tampon maximale pour le contenu de flux continu en direct, en secondes. La valeur par défaut est 0. La longueur de la mémoire tampon peut augmenter au fil du temps en raison de problèmes de mise en réseau et de périphérique (par exemple, décalage horaire entre l’expéditeur et le destinataire). Définissez cette propriété pour réduire la longueur de la mémoire tampon pour les applications en direct telles que réunions et surveillance vidéo.

Lorsque bufferTimeMax > 0 et bufferLength >= bufferTimeMax, les données audio sont lues plus rapidement jusqu’à ce que bufferLength atteigne bufferTime. Si un flux en direct contient uniquement des données vidéo, la vidéo est lue plus rapidement jusqu’à ce que la propriété bufferLength atteigne la propriété bufferTime.

Selon le retard de la lecture (différence entre bufferLength et bufferTime), Flash Player maintient une vitesse de rattrapage comprise entre 1,5 % et 6,25 %. Si le flux contient des données audio, la lecture rapide est obtenue par sous-échantillonnage du domaine de la fréquence, qui minimise la distorsion audible.

Définissez la propriété bufferTimeMax pour activer le rattrapage du flux mis en tampon en temps réel dans les cas suivants :

  • Diffusion d’un support multimédia en direct depuis Flash Media Server.
  • Diffusion d’un support multimédia en direct en mode de génération de données (NetStream.appendBytes()).
bufferLengthbufferTime
bufferTime Spécifie la durée de la mise en mémoire tampon des messages avant que l’affichage du flux ne commence.Number Spécifie la durée de la mise en mémoire tampon des messages avant que l’affichage du flux ne commence.

La valeur par défaut est 0.1 (un dixième de seconde). Pour déterminer le nombre de secondes actuellement dans la mémoire tampon, utilisez la propriété bufferLength.

Pour lire une liste de lecture côté serveur, définissez bufferTime sur au moins 1 seconde. Si vous rencontrez des problèmes de lecture, augmentez la durée de la propriété bufferTime.

Contenu enregistré Pour éviter toute distorsion lors de la diffusion de contenu pré-enregistré (pas en direct), ne réglez pas la valeur de Netstream.bufferTime sur 0. Par défaut, l’application utilise un tampon d’entrée pour le contenu préenregistré qui met les données en file d’attente et lit le fichier correctement. Pour le contenu préenregistré, utilisez le paramétrage par défaut ou augmentez la durée du tampon.

Contenu en direct Lors de la diffusion de contenu en direct, définissez la propriété bufferTime sur 0.

Depuis Flash Player 9.0.115.0, le lecteur n’efface plus la mémoire tampon lors de l’appel de NetStream.pause(). Avant Flash Player 9.0.115.0, le lecteur attendait le remplissage du tampon avant de reprendre la lecture, ce qui entraînait souvent des retards.

En cas d’interruption unique, la propriété NetStream.bufferLength possède une limite de 60 secondes ou de deux fois la valeur de NetStream.bufferTime (la limite supérieure est prise en compte). Par exemple, si la propriété bufferTime est de 20 secondes, Flash Player effectue la mise en mémoire tampon jusqu’à ce que la propriété NetStream.bufferLength corresponde à la valeur la plus élevée de 20~~2 (c’est-à-dire 40), ou à la valeur 60 ; dans ce cas, Flash Player effectue la mise en mémoire tampon jusqu’à ce que la valeur de bufferLength corresponde à 60. Si la propriété bufferTime est de 40 secondes, Flash Player effectue la mise en mémoire tampon jusqu’à ce que la propriété bufferLength corresponde à la valeur la plus élevée de 40~~2 (c’est-à-dire 80), ou à la valeur 60 ; dans ce cas, Flash Player effectue la mise en mémoire tampon jusqu’à ce que la valeur de bufferLength corresponde à 80.

La propriété bufferLength possède en outre une limite absolue. Si un appel à pause() provoque l’augmentation de bufferLength de plus de 600 secondes, ou la valeur de plus élevée de bufferTime ~~ 2, Flash Player efface le contenu de la mémoire tampon et remet à zéro bufferLength. Par exemple, si la propriété bufferTime est de 120 secondes, Flash Player efface le contenu de la mémoire tampon si la propriété bufferLength atteint 600 secondes ; si bufferTime est de 360 secondes, Flash Player efface le contenu de la mémoire tampon si bufferLength atteint 720 secondes.

Conseil : vous pouvez utiliser NetStream.pause() dans le code pour mettre les données en mémoire tampon pendant que les spectateurs regardent une annonce publicitaire, par exemple, puis annuler l’interruption lorsque la vidéo principale démarre.

Pour plus d’informations sur le nouveau comportement d’interruption, voir la page http://www.adobe.com/go/learn_fms_smartpause_fr.

Flash Media Server. Le comportement du tampon varie en fonction de la définition de la durée du tampon : sur un flux de publication ou sur un flux d’abonnement. Dans le cas d’un flux de publication, bufferTime spécifie la durée pendant laquelle le tampon sortant peut croître avant que l’application ne commence à abandonner des images. Dans le cas d’une connexion haut débit, la durée du tampon n’est pas un problème : les données sont envoyées presque aussi rapidement que l’application peut les mettre en mémoire tampon. Toutefois, dans le cas d’une connexion bas débit, il peut exister une différence considérable entre la vitesse à laquelle l’application place les données en mémoire tampon et celle à laquelle elles sont envoyées au client.

Dans le cas d’un flux d’abonnement, bufferTime spécifie le délai pendant lequel les données entrantes doivent être mises en mémoire tampon avant que l’affichage du flux ne commence.

Lors de la lecture d’un flux enregistré, si bufferTime est défini sur 0, Flash le définit sur une faible valeur (environ 10 millisecondes). Si des flux en direct sont ensuite lus (par exemple depuis une liste de lecture), cette durée de tampon persiste. Cela signifie que bufferTime demeure non nul pour le flux.

backBufferTimebufferLengthbufferTimeMaxtime
bytesLoaded Nombre d’octets de données ayant été chargés dans l’application.uint Nombre d’octets de données ayant été chargés dans l’application. Vous pouvez utiliser cette propriété conjointement avec bytesTotal pour estimer le niveau de remplissage du tampon ; par exemple, pour indiquer ce niveau à un utilisateur qui attend la fin du chargement des données dans le tampon. bytesTotalbufferLengthbytesTotal Taille totale, en octets, du fichier chargé dans l’application.uint Taille totale, en octets, du fichier chargé dans l’application. bytesLoadedbufferTimecheckPolicyFile Spécifie si l’application tente de télécharger un fichier de régulation interdomaines à partir du serveur du fichier vidéo chargé avant de commencer à charger ce dernier.Boolean Spécifie si l’application tente de télécharger un fichier de régulation interdomaines à partir du serveur du fichier vidéo chargé avant de commencer à charger ce dernier. Utilisez cette propriété pour télécharger progressivement des données vidéo et pour charger des fichiers se trouvant hors du domaine du fichier SWF appelant. Cette propriété est ignorée lors de l’utilisation de RTMP.

Définissez cette propriété sur true pour appeler BitmapData.draw() sur un fichier vidéo chargé à partir d’un domaine en dehors de celui du fichier SWF appelant. La méthode BitmapData.draw() fournit un accès à la vidéo au niveau des pixels. Si vous appelez BitmapData.draw() sans définir la propriété checkPolicyFile sur true au chargement, vous pouvez obtenir une exception SecurityError, car le fichier de régulation requis n’a pas été téléchargé.

Ne définissez pas cette propriété sur true, sauf si vous souhaitez accéder à la vidéo en cours de chargement au niveau des pixels. La recherche d’un fichier de régulation consomme de la bande passante réseau et risque de retarder le début du téléchargement.

Lorsque vous appelez la méthode NetStream.play() en définissant checkPolicyFile sur true, Flash Player ou le moteur d’exécution d’AIR doit télécharger un fichier de régulation interdomaines approprié ou déterminer qu’un tel fichier n’existe pas avant de commencer à le télécharger. Pour vérifier l’existence d’un fichier de régulation, Flash Player ou le moteur d’exécution AIR effectue les actions suivantes, dans l’ordre indiqué :

  1. L’application examine les fichiers de régulation préalablement téléchargés.
  2. L’application tente de télécharger tout fichier de régulation en attente spécifié dans les appels de la méthode Security.loadPolicyFile().
  3. L’application tente de télécharger un fichier de régulation à partir de l’emplacement par défaut qui correspond à l’URL que vous avez transmise à NetStream.play(), à savoir /crossdomain.xml sur le même serveur que cette URL.

Dans tous les cas, Flash Player ou Adobe AIR exige que le serveur du fichier vidéo héberge un fichier de régulation approprié, que ce dernier permette d’accéder à l’objet à l’adresse URL que vous avez transmise à play() sur la base de l’emplacement du fichier de régulation, et qu’il autorise le domaine du fichier de code appelant à accéder au fichier vidéo par le biais d’une ou plusieurs balises <allow-access-from>.

Si vous définissez checkPolicyFile sur true, l’application attend la vérification du fichier de régulation avant de télécharger la vidéo. Avant de manipuler les données vidéo au niveau des pixels, en appelant BitmapData.draw(), par exemple, attendez d’avoir reçu de votre objet NetStream des événements onMetaData ou NetStatus.

Si vous définissez checkPolicyFile sur true et qu’il n’existe aucun fichier de régulation approprié, vous ne recevez pas de message d’erreur tant que vous n’effectuez pas une opération nécessitant un tel fichier, auquel cas l’application renvoie une exception SecurityError.

Servez-vous de checkPolicyFile avec précaution si vous téléchargez un fichier vidéo à partir d’une URL qui utilise des redirections HTTP côté serveur. L’application tente d’extraire les fichiers de régulation correspondant à l’URL spécifiée à l’origine dans NetStream.play(). Si le fichier final provient d’une URL différente suite à des redirections HTTP, les fichiers de régulation initialement téléchargés peuvent ne pas être applicables à l’URL finale du fichier (URL qui doit faire l’objet des mesures de sécurité).

Pour plus d’informations sur les fichiers de régulation, voir la rubrique « Contrôles de site Web (fichiers de régulation) » dans le Guide du développeur d’ActionScript 3.0 , ainsi que la rubrique Sécurité du Pôle de développement Flash Player (disponible en anglais uniquement).

flash.display.BitmapData.draw()flash.system.Security.loadPolicyFile()netStatusonMetaDataplay()
client Spécifie l’objet sur lequel les méthodes de rappel sont invoquées pour gérer la diffusion en continue ou les données des fichiers FLV/F4V.ObjectLa propriété client ne peut pas être réglée sur l’objet null. TypeErrorTypeError Spécifie l’objet sur lequel les méthodes de rappel sont invoquées pour gérer la diffusion en continue ou les données des fichiers FLV/F4V. L’objet par défaut correspond à this, l’objet NetStream en cours de création. Si vous réglez la propriété client sur un autre objet, les méthodes de rappel sont appelées sur celui-ci. L’objet NetStream.client peut appeler les fonctions suivantes et recevoir un objet de données associé : onCuePoint(), onImageData(), onMetaData(), onPlayStatus(), onSeekPoint(), onTextData() et onXMPData().

Pour associer la propriété client à un gestionnaire d’événement :

  1. Créez un objet et affectez-le à la propriété client de l’objet NetStream : var customClient:Object = new Object(); my_netstream.client = customClient;
  2. Affectez une fonction de gestionnaire pour l’événement de données désiré en tant que propriété de l’objet client : customClient.onImageData = onImageDataHandler;
  3. Ecrivez la fonction de gestionnaire pour recevoir l’objet d’événement de données, tel que : public function onImageDataHandler(imageData:Object):void { trace("imageData length: " + imageData.data.length); }

Lorsque les données sont transmises via le flux ou au cours de la lecture, l’objet d’événement de données (dans ce cas l’objet imageData) est renseigné avec les données. Reportez-vous à la description de onImageData, qui inclut un exemple complet d’objet affecté à la propriété client.

Pour associer la propriété client à une sous-classe :

  1. Créez une sous-classe avec une fonction de gestionnaire pour recevoir l’objet d’événement de données : class CustomClient { public function onMetaData(info:Object):void { trace("metadata: duration=" + info.duration + " framerate=" + info.framerate); }
  2. Affectez une occurrence de la sous-classe à la propriété client de l’objet NetStream : my_netstream.client = new CustomClient();

Lorsque les données sont transmises via le flux ou au cours de la lecture, l’objet d’événement de données (dans ce cas l’objet info) est renseigné avec les données. Reportez-vous à l’exemple de classe proposé à la fin de la classe NetStream, qui illustre l’affectation d’une occurrence de sous-classe à la propriété client.

onCuePointonImageDataonMetaDataonPlayStatusonSeekPointonTextData
currentFPS Nombre d’images affichées par seconde.Number Nombre d’images affichées par seconde. Si vous exportez des fichiers vidéo pour les lire sur différents systèmes, vous pouvez vérifier cette valeur pendant le test afin de déterminer la compression à appliquer lors de l’exportation du fichier. dataReliable Pour les connexions RTMFP, indique si les appels de la méthode NetStream.send() sont envoyés en toute fiabilité.Boolean Pour les connexions RTMFP, indique si les appels de la méthode NetStream.send() sont envoyés en toute fiabilité. Lorsque la valeur TRUE est définie, les appels de la méthode NetStream.send() transmis sur cet objet NetStream sont totalement fiables. Si la valeur est définie sur FALSE, les appels de la méthode NetStream.send() ne sont pas transmis en toute fiabilité, mais sont retransmis pour une durée limitée, puis abandonnés. Vous pouvez définir cette valeur sur FALSE pour réduire le temps d’attente, au détriment de la qualité des données.

Si vous tentez de définir cette propriété sur FALSE sur un protocole réseau qui ne prend pas en charge la fiabilité partielle, la tentative est ignorée et la propriété est définie sur TRUE.

audioReliablesend()videoReliable
farID Pour les connexions RTMFP, l’identifiant de l’extrémité connectée à cette occurrence de NetStream.String Pour les connexions RTMFP, l’identifiant de l’extrémité connectée à cette occurrence de NetStream. farNonce Pour les connexions RTMFP et RTMPE, une valeur choisie fondamentalement par l’autre extrémité de ce flux, unique à cette connexion.String Pour les connexions RTMFP et RTMPE, une valeur choisie fondamentalement par l’autre extrémité de ce flux, unique à cette connexion. Cette valeur apparaît à l’autre extrémité du flux en tant que valeur nearNonce. inBufferSeek Indique si les données affichées sont mises en cache pour la recherche dynamique (TRUE) ou non (FALSE).Boolean Indique si les données affichées sont mises en cache pour la recherche dynamique (TRUE) ou non (FALSE). La valeur par défaut est FALSE.

Flash Media Server 3.5.3 et Flash Player 10.1 collaborent pour prendre en charge la recherche dynamique. La recherche dynamique a recours à une mémoire tampon d’arrière-plan et à une mémoire tampon directe pour effectuer des recherches sans solliciter de données au serveur. La recherche standard efface les données placées en mémoire tampon et demande au serveur d’envoyer de nouvelles données en fonction du temps de recherche.

Appelez NetStream.step() pour avancer ou reculer du nombre d’images spécifié. Appelez NetStream.seek() pour effectuer une recherche vers l’avant ou vers l’arrière du nombre de secondes spécifié.

La recherche dynamique réduit la charge du serveur et améliore les performances de recherche. Définissez inBufferSeek=true et appelez step() et seek() pour créer :

  • Une fonctionnalité DVR côté client. Recherchez dans la mémoire tampon côté client au lieu d’accéder au serveur pour distribuer la nouvelle vidéo.
  • Des modes de ruse. Créez des lecteurs qui permettent de parcourir les images, d’avancer et de revenir en arrière rapidement, et d’avancer au ralenti.

Lorsque inBufferSeek=true et qu’un appel de NetStream.seek() aboutit, la propriété info.description de NetStatusEvent contient la chaîne "client-inBufferSeek".

Lorsqu’un appel de NetStream.step() aboutit, la propriété info.code de NetStatusEvent contient la chaîne "NetStream.Step.Notify".

backBufferTimebackBufferLengthbufferTimebufferLengthstep()seek()
info Renvoie un objet NetStreamInfo dont les propriétés contiennent des statistiques sur la qualité de service.flash.net:NetStreamInfo Renvoie un objet NetStreamInfo dont les propriétés contiennent des statistiques sur la qualité de service. L’objet est un instantané de l’état en cours. flash.net.NetStreamInfoliveDelay Nombre de secondes de données enregistrées dans le tampon du flux abonné en mode en direct (sans mise en mémoire tampon).Number Nombre de secondes de données enregistrées dans le tampon du flux abonné en mode en direct (sans mise en mémoire tampon). Cette propriété spécifie l’actuel délai de transmission réseau (retard).

Cette propriété est surtout conçue pour une utilisation avec un serveur, tel que Flash Media Server. Pour plus d’informations, voir la description de la classe.

Vous pouvez extraire la valeur de cette propriété pour évaluer approximativement la qualité de transmission du flux continu, et la communiquer à l’utilisateur.

maxPauseBufferTime Spécifie la durée de la mise en tampon des messages pendant le mode pause, en secondes.Number Spécifie la durée de la mise en tampon des messages pendant le mode pause, en secondes. Cette propriété peut être utilisée pour limiter le volume de mise en mémoire tampon pendant le mode pause. Dès que la valeur NetStream.bufferLength atteint cette limite, la mise en mémoire tampon s’arrête.

Si cette valeur n’est pas définie, la limite par défaut est de 60 secondes ou correspond à deux fois la valeur de NetStream.bufferTime sur chaque pause (la valeur la plus élevée est prise en compte).

bufferTime
multicastAvailabilitySendToAll Pour les connexions RTMFP, indique si les messages de disponibilité des fragments de multidiffusion homologue à homologue sont envoyés à tous les homologues ou à un seul homologue.Boolean Pour les connexions RTMFP, indique si les messages de disponibilité des fragments de multidiffusion homologue à homologue sont envoyés à tous les homologues ou à un seul homologue. La valeur TRUE indique que les messages sont envoyés une fois à tous les homologues en fonction de l’intervalle spécifié. La valeur FALSE indique que les messages sont envoyés uniquement à un seul homologue en fonction de l’intervalle spécifié. L’intervalle est déterminé par la propriété multicastAvailabilityUpdatePeriod. multicastAvailabilityUpdatePeriodmulticastAvailabilityUpdatePeriod Pour les connexions RTMFP, spécifie l’intervalle, en secondes, entre les messages envoyés aux homologues les informant que le nœud local dispose de nouveaux fragments multimédias de multidiffusion homologue à homologue.Number Pour les connexions RTMFP, spécifie l’intervalle, en secondes, entre les messages envoyés aux homologues les informant que le nœud local dispose de nouveaux fragments multimédias de multidiffusion homologue à homologue. Des valeurs plus élevées peuvent augmenter l’efficacité du traitement par lots et réduire la surcharge de contrôle, mais risquent de diminuer la qualité à la réception en réduisant la durée disponible pour extraire les fragments avant qu’ils ne soient hors de la fenêtre. Des valeurs moins élevées peuvent réduire le temps d’attente et améliorer la qualité, mais risquent d’augmenter la surcharge de contrôle. multicastAvailabilitySendToAllmulticastFetchPeriodmulticastWindowDurationmulticastFetchPeriod Pour les connexions RTMFP, spécifie la durée, en secondes, entre le moment où le nœud local apprend qu’un fragment multimédia de multidiffusion homologue à homologue est disponible et le moment où il tente d’extraire ce fragment d’un homologue. Number Pour les connexions RTMFP, spécifie la durée, en secondes, entre le moment où le nœud local apprend qu’un fragment multimédia de multidiffusion homologue à homologue est disponible et le moment où il tente d’extraire ce fragment d’un homologue. Cette valeur donne la possibilité d’envoyer le fragment au nœud local de façon dynamique avant qu’un homologue ne tente une extraction. Elle permet également à plusieurs homologues d’annoncer la disponibilité du fragment, de manière à ce que le chargement de l’extraction puisse être réparti entre plusieurs homologues.

Des valeurs plus élevées peuvent améliorer l’équilibrage de charge et son équité dans le maillage homologue à homologue, mais réduire la multicastWindowDuration et augmenter le temps d’attente. Des valeurs plus petites peuvent réduire le temps d’attente lorsque l’extraction est requise, mais risquent d’augmenter la réception des données dupliquées et de réduire l’équilibrage de charge du maillage homologue à homologue.

multicastAvailabilityUpdatePeriodmulticastWindowDuration
multicastInfo Pour les connexions RTMFP, renvoie un objet NetStreamMulticastInfo dont les propriétés contiennent des statistiques sur la qualité du service.flash.net:NetStreamMulticastInfo Pour les connexions RTMFP, renvoie un objet NetStreamMulticastInfo dont les propriétés contiennent des statistiques sur la qualité du service. L’objet est un instantané de l’état en cours. flash.net.NetStreamMulticastInfomulticastPushNeighborLimit Pour les connexions RTMFP, spécifie le nombre maximum d’homologues auxquels envoyer les fragments multimédias de multidiffusion.Number Pour les connexions RTMFP, spécifie le nombre maximum d’homologues auxquels envoyer les fragments multimédias de multidiffusion. multicastRelayMarginDuration Pour les connexions RTMFP, spécifie la durée, en secondes, pendant laquelle les données de multidiffusion homologue à homologue sont disponibles aux homologues qui souhaitent procéder à leur envoi au-delà d’une durée spécifiée.Number Pour les connexions RTMFP, spécifie la durée, en secondes, pendant laquelle les données de multidiffusion homologue à homologue sont disponibles aux homologues qui souhaitent procéder à leur envoi au-delà d’une durée spécifiée. La durée est spécifiée par la propriété multicastWindowDuration. multicastWindowDurationmulticastWindowDuration Pour les connexions RTMFP, spécifie la durée, en secondes, de la fenêtre de réassamblage multidiffusion homologue à homologue.Number Pour les connexions RTMFP, spécifie la durée, en secondes, de la fenêtre de réassamblage multidiffusion homologue à homologue. Des valeurs plus petites réduisent le temps d’attente, mais risquent de réduire la qualité, car elles ne fournissent pas assez de temps pour obtenir tous les fragments. Inversement, des valeurs plus élevées peuvent augmenter la qualité en fournissant plus de temps pour obtenir tous les fragments tout en augmentant le temps d’attente. multicastRelayMarginDurationnearNonce Pour les connexions RTMFP et RTMPE, une valeur choisie fondamentalement par cette extrémité du flux, unique à cette connexion.String Pour les connexions RTMFP et RTMPE, une valeur choisie fondamentalement par cette extrémité du flux, unique à cette connexion. Cette valeur apparaît à l’autre extrémité du flux en tant que valeur farNonce. objectEncoding Encodage d’objet (version AMF) de cet objet NetStream.uint Encodage d’objet (version AMF) de cet objet NetStream. L’objet NetStream hérite de sa valeur objectEncoding de l’objet NetConnection associé. Il est important de comprendre cette propriété si votre fichier SWF ActionScript 3.0 doit communiquer avec des serveurs antérieurs à Flash Player 9. Pour plus d’informations, voir la description de la propriété objectEncoding dans la classe NetConnection.

La valeur de cette propriété varie selon la nature du flux continu, local ou distant. Les flux locaux, dans lesquels null a été transmis à la méthode NetConnection.connect(), renvoient la valeur de NetConnection.defaultObjectEncoding. Les flux distants, pour lesquels vous êtes connecté(e) à un serveur, renvoient l’encodage d’objet de la connexion au serveur.

Si vous tentez de lire cette propriété sans être connecté ou si vous tentez de la modifier, l’application renvoie une exception.

flash.net.NetConnection.objectEncoding
peerStreams Objet qui détient toutes les occurrences NetStream d’abonnement qui écoutent cette occurrence de NetStream de publication.Array Objet qui détient toutes les occurrences NetStream d’abonnement qui écoutent cette occurrence de NetStream de publication. soundTransform Contrôle le son dans l’objet NetStream.flash.media:SoundTransform Contrôle le son dans l’objet NetStream. Pour plus d’informations, voir la description de la classe SoundTransform. flash.media.SoundTransformtime Position de la tête de lecture, en secondes.Number Position de la tête de lecture, en secondes.

Flash Media Server Dans le cas d’un flux d’abonnement, nombre de secondes pendant lequel le flux a été lu. Dans le cas d’un flux de publication, nombre de secondes pendant lequel le flux a été publié. Ce nombre est précis au millième près ; multipliez-le par 1000 pour obtenir le nombre de millisecondes pendant lequel le flux a été lu.

Dans le cas d’un flux d’abonnement, si le serveur cesse d’envoyer des données et que le flux demeure ouvert, la valeur de la propriété time cesse d’avancer. Lorsque le serveur recommence à envoyer des données, la valeur continue d’avancer à partir du point où elle s’est arrêtée (c’est-à-dire lorsque le serveur a cessé l’envoi des données).

La valeur de la propriété time continue d’avancer lorsque le flux bascule d’un élément de la liste de lecture à un autre. Cette propriété est définie sur 0 lorsque NetStream.play() est appelé avec reset défini sur 1 ou sur true, ou lorsque NetStream.close() est appelé.

bufferLengthbytesLoaded
videoReliable Pour les connexions RTMFP, indique si les données vidéo sont envoyées en toute fiabilité.Boolean Pour les connexions RTMFP, indique si les données vidéo sont envoyées en toute fiabilité. Lorsque cette propriété est définie sur TRUE, toutes les données vidéo transmises sur ce NetStream sont totalement fiables. Si elle est définie sur FALSE, les données vidéo transmises ne sont pas totalement fiables ; elles sont retransmises pour une durée limitée, puis abandonnées. Vous pouvez utiliser la valeur FALSE pour réduire le temps d’attente au détriment de la qualité vidéo.

Si vous tentez de définir cette propriété sur FALSE sur un protocole réseau qui ne prend pas en charge la fiabilité partielle, la tentative est ignorée et la propriété est définie sur TRUE.

audioReliabledataReliable
videoSampleAccess Pour les connexions RTMFP, indique si les abonnés homologue à homologue de ce flux de réseau sont autorisés à capturer le flux vidéo.Boolean Pour les connexions RTMFP, indique si les abonnés homologue à homologue de ce flux de réseau sont autorisés à capturer le flux vidéo. Lorsque la valeur FALSE est définie, l’abonné tente de capturer le flux vidéo pour afficher les erreurs d’autorisation. audioSampleAccess
NetMonitor La classe NetMonitor permet de surveiller les objets NetStream utilisés par une application.flash.events:EventDispatcher La classe NetMonitor permet de surveiller les objets NetStream utilisés par une application.

Utilisez la classe NetMonitor pour obtenir la liste actuelle des objets NetStream en cours d’utilisation dans une application. Une occurrence de cette classe distribue un événement netStreamCreate chaque fois qu’un nouvel objet NetStream est créé.

Vous pouvez utiliser la classe NetMonitor pour vous aider à suivre la lecture de la vidéo et les événements liés, indépendamment du lecteur vidéo en cours d’utilisation. Cela peut s’avérer utile lors de la mesure de médias, d’analyses, et de l’utilisation de bibliothèques de suivi.

Cet exemple montre comment la classe NetMonitor peut être utilisée en vue d’accéder aux informations de l’objet NetStream sans savoir exactement quel lecteur vidéo est en cours d’utilisation. Ici, la classe MediaPlayerSprite du projet Open Screen Media Framework (OSMF) est utilisée, mais n’importe quel lecteur vidéo pourrait être remplacé.

Vous pouvez utiliser la barre d’espace pour mettre en pause et reprendre la lecture de la vidéo dans l’exemple, et les flèches droite et gauche pour effectuer une recherche vers l’avant ou vers l’arrière de 30 secondes afin de connaître les effets de ces actions sur les événements distribués.

package { import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.KeyboardEvent; import flash.events.NetDataEvent; import flash.events.NetMonitorEvent; import flash.events.NetStatusEvent; import flash.net.NetMonitor; import flash.net.NetStream; import flash.ui.Keyboard; import org.osmf.elements.VideoElement; import org.osmf.media.MediaPlayer; import org.osmf.media.MediaPlayerSprite; import org.osmf.net.DynamicStreamingItem; import org.osmf.net.DynamicStreamingResource; public class NetMonitorExample extends Sprite { private var netmon:NetMonitor; private var mediaPlayer:MediaPlayer; public function NetMonitorExample() { //Configure stage this.stage.align = StageAlign.TOP_LEFT; this.stage.scaleMode = StageScaleMode.NO_SCALE; //Create NetMonitor object netmon = new flash.net.NetMonitor(); netmon.addEventListener(NetMonitorEvent.NET_STREAM_CREATE, newNetStream ); //Setup video player var mediaPlayerSprite:MediaPlayerSprite = new MediaPlayerSprite(); var videoElement:VideoElement = new VideoElement(); var dynResource:DynamicStreamingResource = new DynamicStreamingResource( "rtmp://cp67126.edgefcs.net/ondemand" ); dynResource.streamItems = Vector.<DynamicStreamingItem>( [ new DynamicStreamingItem( "mp4:mediapm/ovp/content/demo/video/elephants_dream/elephants_dream_768x428_24.0fps_408kbps.mp4", 408, 768, 428 ) , new DynamicStreamingItem( "mp4:mediapm/ovp/content/demo/video/elephants_dream/elephants_dream_768x428_24.0fps_608kbps.mp4", 608, 768, 428 ) , new DynamicStreamingItem( "mp4:mediapm/ovp/content/demo/video/elephants_dream/elephants_dream_1024x522_24.0fps_908kbps.mp4", 908, 1024, 522 ) , new DynamicStreamingItem( "mp4:mediapm/ovp/content/demo/video/elephants_dream/elephants_dream_1024x522_24.0fps_1308kbps.mp4", 1308, 1024, 522 ) , new DynamicStreamingItem( "mp4:mediapm/ovp/content/demo/video/elephants_dream/elephants_dream_1280x720_24.0fps_1708kbps.mp4", 1708, 1280, 720 ) ]); videoElement.resource = dynResource; addChild( mediaPlayerSprite ); mediaPlayerSprite.media = videoElement; mediaPlayer = mediaPlayerSprite.mediaPlayer; this.stage.addEventListener( KeyboardEvent.KEY_DOWN, keyControl ); } //On new NetStream private function newNetStream( event:NetMonitorEvent ):void { trace( "New Netstream object "); var stream:NetStream = event.netStream; stream.addEventListener(NetDataEvent.MEDIA_TYPE_DATA, onStreamData); stream.addEventListener(NetStatusEvent.NET_STATUS, onStatus); } //On data events from a NetStream object private function onStreamData( event:NetDataEvent ):void { trace( "Data event at " + event.timestamp ); var netStream:NetStream = event.target as NetStream; switch( event.info.handler ) { case "onMetaData": trace( "--MetaData: " + stringify( netStream.info.metaData )); break; case "onXMPData": trace( "--XMPData: " + stringify( netStream.info.xmpData )); break; default: trace( "--" + event.info.handler + ": " + stringify(event.info.args[0]) ); } } //On status events from a NetStream object private function onStatus( event:NetStatusEvent ):void { trace( "Status: " + stringify( event.info ) ); } //Utility function to print out object properties private function stringify( object:Object ):String { var string:String = ""; var prop:String; var comma:Boolean = false; for ( prop in object ) { if( comma ) string += ", "; else comma = true; if( typeof(object[prop]) == "object" ) { stringify( object[prop] ) } else string += prop + " = " + object[prop]; } return string; } //Simple keyboard control for the video player private function keyControl( event:KeyboardEvent ):void { switch ( event.keyCode ) { case Keyboard.SPACE: if( mediaPlayer.paused ) mediaPlayer.play(); else mediaPlayer.pause(); break; case Keyboard.RIGHT: mediaPlayer.seek( mediaPlayer.currentTime + 30 ); break; case Keyboard.LEFT: mediaPlayer.seek( mediaPlayer.currentTime - 30 ); break; default: //do nothing } } } }
NetStreamnetStreamCreate Distribué lorsqu’un nouvel objet NetStream est créé dans le contexte de sécurité de cette occurrence de NetMonitor.flash.events.NetMonitorEvent.NET_STREAM_CREATEflash.events.NetMonitorEvent Distribué lorsqu’un nouvel objet NetStream est créé dans le contexte de sécurité de cette occurrence de NetMonitor.

Remarque : si la surveillance des objets NetStream n’est pas prise en charge sur la plate-forme actuelle, les événements netStreamCreate ne sont pas distribués.

listStreams Extrait tous les objets NetStream appartenant au contexte de sécurité de cet objet NetMonitor.Vecteur des objets NetStream Extrait tous les objets NetStream appartenant au contexte de sécurité de cet objet NetMonitor.

Evitez la mise en cache de la liste des objets NetStream.

Remarque : si la surveillance des objets NetStream n’est pas prise en charge sur la plate-forme actuelle, la liste renvoyée par cette fonction est toujours vide.

NetStreamInfo La classe NetStreamInfo spécifie les diverses statistiques de Qualité de Service (QOS) et autres informations liées à un objet NetStream et le tampon de flux sous-jacent pour l’audio, la vidéo et les données.Object La classe NetStreamInfo spécifie les diverses statistiques de Qualité de Service (QOS) et autres informations liées à un objet NetStream et le tampon de flux sous-jacent pour l’audio, la vidéo et les données. Un objet NetStreamInfo est renvoyé en réponse à l’appel de NetStream.info, qui prend un instantané de l’état QOS actuel et fournit les statistiques QOS via les propriétés NetStreamInfo. toString Renvoie une valeur de texte donnant la liste des propriétés de l’objet NetStreamInfo.Chaîne contenant les valeurs des propriétés de l’objet NetStreamInfo. StringRenvoie une valeur de texte donnant la liste des propriétés de cet objet NetStreamInfo. Renvoie une valeur de texte donnant la liste des propriétés de l’objet NetStreamInfo. SRTT Temps de boucle corrigé (SRTT, Smoothed Round Trip Time) de la session NetStream, en millisecondes.Number Temps de boucle corrigé (SRTT, Smoothed Round Trip Time) de la session NetStream, en millisecondes. Cette propriété contient une valeur valide uniquement pour les flux de données RTMFP. Pour les flux de données RTMP, la valeur est 0. flash.net.NetGroupaudioBufferByteLength Fournit la taille du tampon audio Netstream, en octets.Number Fournit la taille du tampon audio Netstream, en octets. La propriété spécifie la taille du tampon pour les données audio du support de diffusion en continu, en direct et enregistré. Cette propriété est similaire à Netstream.bytesLoaded, utilisée dans les téléchargements progressifs. audioBufferLength Fournit la taille du tampon audio Netstream, en secondes.Number Fournit la taille du tampon audio Netstream, en secondes. Cette propriété étend la propriété NetStream.bufferLength et fournit la durée du tampon, en particulier pour les données audio. audioByteCount Spécifie le nombre total d’octets audio arrivés en file d’attente, quelle que soit la quantité déjà lue ou vidée.Number Spécifie le nombre total d’octets audio arrivés en file d’attente, quelle que soit la quantité déjà lue ou vidée. Vous pouvez utiliser cette valeur pour calculer la cadence des données audio entrantes, en utilisant la mesure de votre choix, et en créant une horloge et en calculant la différence entre les valeurs des appels successifs à l’horloge. Vous pouvez également utiliser audioBytesPerSecond. audioBytesPerSecondaudioBytesPerSecond Spécifie la cadence à laquelle le tampon audio NetStream est rempli, en octets par seconde.Number Spécifie la cadence à laquelle le tampon audio NetStream est rempli, en octets par seconde. La valeur est calculée en tant que moyenne des données audio reçues au cours de la dernière seconde. audioLossRate Spécifie la perte audio de la session NetStream.Number Spécifie la perte audio de la session NetStream. Cette valeur ne renvoie une valeur valide que pour les flux RTMFP et renvoie 0 pour les flux RTMP. La perte audio est le rapport entre les messages perdus et le total des messages. byteCount Spécifie le nombre total d’octets audio arrivés en file d’attente, quelle que soit la quantité déjà lue ou vidée.Number Spécifie le nombre total d’octets audio arrivés en file d’attente, quelle que soit la quantité déjà lue ou vidée. Vous pouvez utiliser cette valeur pour calculer la cadence des données entrantes, en utilisant la mesure de votre choix, et en créant une horloge et en calculant la différence entre les valeurs des appels successifs à l’horloge. Vous pouvez également utiliser currentBytesPerSecond. currentBytesPerSecondcurrentBytesPerSecond Spécifie la cadence à laquelle le tampon Netstream est rempli, en octets par seconde.Number Spécifie la cadence à laquelle le tampon Netstream est rempli, en octets par seconde. La valeur est calculée en tant que moyenne des données reçues au cours de la dernière seconde. dataBufferByteLength Fournit la taille du tampon de données Netstream, en octets.Number Fournit la taille du tampon de données Netstream, en octets. La propriété spécifie la taille du tampon pour les messages de données su support de diffusion en continu, en direct et enregistré. Cette propriété est similaire à Netstream.bytesLoaded, utilisée dans les téléchargements progressifs. dataBufferLength Fournit la taille du tampon des données Netstream, en secondes.Number Fournit la taille du tampon des données Netstream, en secondes. Cette propriété étend la propriété NetStream.bufferLength et fournit la durée du tampon, en particulier pour les messages de données. dataByteCount Spécifie le nombre total d’octets de messages de données arrivés en file d’attente, quelle que soit la quantité déjà lue ou vidée.Number Spécifie le nombre total d’octets de messages de données arrivés en file d’attente, quelle que soit la quantité déjà lue ou vidée. Vous pouvez utiliser cette valeur pour calculer la cadence des messages de données entrants, en utilisant la mesure de votre choix, et en créant une horloge et en calculant la différence entre les valeurs des appels successifs à l’horloge. Vous pouvez également utiliser dataBytesPerSecond. dataBytesPerSeconddataBytesPerSecond Spécifie la cadence à laquelle le tampon de données NetStream est rempli, en octets par seconde.Number Spécifie la cadence à laquelle le tampon de données NetStream est rempli, en octets par seconde. La valeur est calculée en tant que moyenne des messages de données reçus au cours de la dernière seconde. droppedFrames Renvoie le nombre d’images vidéo abandonnées dans la session de lecture NetStream en cours.Number Renvoie le nombre d’images vidéo abandonnées dans la session de lecture NetStream en cours.

Dans le cas de téléchargement de flux enregistrés ou progressifs, si la vidéo est de qualité ou de résolution élevée, le décodeur peut être en retard dans le décodage du nombre requis d’images par seconde s’il ne dispose pas des ressources CPU système adéquates. En flux continu en direct, le tampon abandonne les images vidéo si le retard devient trop important. Cette propriété spécifie le nombre d’images abandonnées et non présentées normalement.

isLive Indique si le média en cours de lecture est enregistré ou en direct.Boolean Indique si le média en cours de lecture est enregistré ou en direct. Cette propriété est pertinente uniquement pour la diffusion en continu RTMP. Pour un téléchargement progressif et la diffusion en continu HTTP dynamique, cette propriété est toujours false.

Remarque : cette propriété est toujours définie sur false dans Flash Player dans le navigateur sur Android et le système d’exploitation des tablettes Blackberry ou dans AIR sur iOS.

maxBytesPerSecond Spécifie la cadence maximale à laquelle le tampon NetStream est rempli, en octets par seconde.Number Spécifie la cadence maximale à laquelle le tampon NetStream est rempli, en octets par seconde. Cette valeur fournit des informations sur la capacité du réseau du client sur la base des derniers messages reçus par l’objet NetStream. Selon la taille du tampon spécifié dans NetStream.bufferTime et la bande passante disponible sur le client, Flash Media Server remplit le tampon en rafales. Cette propriété fournit la cadence maximale à laquelle le tampon du client est rempli. metaData Objet de métadonnées le plus récent associé au média en cours de lecture.Object Objet de métadonnées le plus récent associé au média en cours de lecture.

Remarque : cette propriété est toujours définie sur null dans Flash Player dans le navigateur sur Android et le système d’exploitation des tablettes Blackberry ou dans AIR sur iOS.

playbackBytesPerSecond Renvoie la cadence de lecture du flux, en octets par seconde.Number Renvoie la cadence de lecture du flux, en octets par seconde. Le tampon de lecture peut contenir diverses listes de lecture. Cette propriété fournit la cadence de lecture correspondant le mieux à la vitesse de transmission du flux de données en cours de lecture. resourceName Nom de la ressource utilisée lors de l’appel de NetStream.play().StringNom de la ressource utilisée lors de l’appel de NetStream.play(). Nom de la ressource utilisée lors de l’appel de NetStream.play(). Cette propriété indique l’adresse URL complète pour le téléchargement progressif, le nom de la ressource pour la diffusion en continu RTMP et la valeur null pour la diffusion en continu HTTP.

Remarque : cette propriété est toujours définie sur null dans Flash Player dans le navigateur sur Android et le système d’exploitation des tablettes Blackberry ou dans AIR sur iOS.

flash.media.NetStream.play()
uri URI utilisée lors de l’appel de NetConnection.connect().StringURI utilisée lors de l’appel de NetConnection.connect(). URI utilisée lors de l’appel de NetConnection.connect(). Cette valeur est null pour un téléchargement progressif ou une diffusion en continu HTTP.

Remarque : cette propriété est toujours définie sur null dans Flash Player dans le navigateur sur Android et le système d’exploitation des tablettes Blackberry ou dans AIR sur iOS.

flash.media.NetConnection.uri
videoBufferByteLength Fournit la taille du tampon vidéo Netstream, en octets.Number Fournit la taille du tampon vidéo Netstream, en octets. La propriété spécifie la taille du tampon pour les données vidéo du support de diffusion en continu, en direct et enregistré. Cette propriété est similaire à Netstream.bytesLoaded, utilisée dans les téléchargements progressifs. videoBufferLength Fournit la taille du tampon vidéo Netstream, en secondes.Number Fournit la taille du tampon vidéo Netstream, en secondes. Cette propriété étend la propriété NetStream.bufferLength et fournit la durée du tampon en secondes, en particulier pour les données vidéo. videoByteCount Spécifie le nombre total d’octets vidéo arrivés en file d’attente, quelle que soit la quantité déjà lue ou vidée.Number Spécifie le nombre total d’octets vidéo arrivés en file d’attente, quelle que soit la quantité déjà lue ou vidée. Vous pouvez utiliser cette valeur pour calculer la cadence des données vidéo entrantes, en utilisant la mesure de votre choix, et en créant une horloge et en calculant la différence entre les valeurs des appels successifs à l’horloge. Vous pouvez également utiliser videoBytesPerSecond. videoBytesPerSecondvideoBytesPerSecond Spécifie la cadence à laquelle le tampon vidéo NetStream est rempli, en octets par seconde.Number Spécifie la cadence à laquelle le tampon vidéo NetStream est rempli, en octets par seconde. La valeur est calculée en tant que moyenne des données vidéo reçues au cours de la dernière seconde. videoLossRate Indique le taux de perte vidéo du flux de réseau (taux de messages perdus par rapport au nombre total de messages).Number Indique le taux de perte vidéo du flux de réseau (taux de messages perdus par rapport au nombre total de messages).

Lorsque le message est plus petit que l’unité de transmission maximale (UTM), cette valeur correspond au taux de perte de paquets réseau.

Cette propriété renvoie une valeur valide uniquement pour les flux RTMFP. Pour les flux RTMP, elle renvoie une valeur de zéro. Pour plus d’informations, voir la documentation de Flash Media Server.

xmpData Objet de données XMP le plus récent associé au média en cours de lecture.Object Objet de données XMP le plus récent associé au média en cours de lecture.

Remarque : cette propriété est toujours définie sur null dans Flash Player dans le navigateur sur Android et le système d’exploitation des tablettes Blackberry ou dans AIR sur iOS.

URLStream La classe URLStream offre un accès de bas niveau pour le téléchargement des URL.flash.utils:IDataInputflash.events:EventDispatcher La classe URLStream offre un accès de bas niveau pour le téléchargement des URL. Les données sont mises à la disposition du code dès le début de leur téléchargement. Il n’est donc pas nécessaire d’attendre la fin du téléchargement du fichier comme avec URLLoader. La classe URLStream vous permet également de fermer un flux continu avant la fin du téléchargement. Le contenu du fichier téléchargé est disponible sous forme de données binaires brutes.

Les opérations de lecture dans URLStream ne sont pas bloquantes. Cela signifie que vous devez utiliser la propriété bytesAvailable pour déterminer si suffisamment de données sont disponibles avant de tenter de les lire. Si les données disponibles sont insuffisantes, une exception EOFError est renvoyée.

Toutes les données binaires sont codées par défaut au format BE (gros-boutiste), l’octet le plus significatif étant en première position.

Les règles de sécurité qui s’appliquent au téléchargement d’URL avec la classe URLStream sont identiques à celles appliquées aux objets URLLoader. Il est possible de télécharger les fichiers de régulation, si nécessaire. Les règles de sécurité des fichiers locaux sont appliquées et des avertissements de sécurité sont générés, si besoin est.

L’exemple suivant charge un fichier SWF et analyse la première partie de son en-tête pour indiquer les informations relatives à la compression et au numéro de version.

Pour exécuter l’exemple, placez un fichier intitulé URLStreamExample.swf dans le même répertoire que vos fichiers SWF.

package { import flash.display.Sprite; import flash.errors.*; import flash.events.*; import flash.net.URLRequest; import flash.net.URLStream; public class URLStreamExample extends Sprite { private static const ZLIB_CODE:String = "CWS"; private var stream:URLStream; public function URLStreamExample() { stream = new URLStream(); var request:URLRequest = new URLRequest("URLStreamExample.swf"); configureListeners(stream); try { stream.load(request); } catch (error:Error) { trace("Unable to load requested URL."); } } private function configureListeners(dispatcher:EventDispatcher):void { dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); } private function parseHeader():void { trace("parseHeader"); trace("isCompressed: " + isCompressed()); trace("version: " + stream.readByte()); } private function isCompressed():Boolean { return (stream.readUTFBytes(3) == ZLIB_CODE); } private function completeHandler(event:Event):void { trace("completeHandler: " + event); parseHeader(); } private function openHandler(event:Event):void { trace("openHandler: " + event); } private function progressHandler(event:Event):void { trace("progressHandler: " + event); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function httpStatusHandler(event:HTTPStatusEvent):void { trace("httpStatusHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } } }
URLLoaderURLRequestprogress Distribué à la réception des données au fur et à mesure du téléchargement.flash.events.ProgressEvent.PROGRESSflash.events.ProgressEvent Distribué à la réception des données au fur et à mesure du téléchargement. Les données reçues peuvent être lues immédiatement à l’aide des méthodes de la classe URLStream. URLStream.load()open Distribué lors du démarrage d’une opération de chargement.flash.events.Event.OPENflash.events.Event Distribué lors du démarrage d’une opération de chargement. URLStream.load()ioError Distribué lorsqu’il se produit une erreur d’entrée/sortie entraînant l’échec d’un chargement.flash.events.IOErrorEvent.IO_ERRORflash.events.IOErrorEvent Distribué lorsqu’il se produit une erreur d’entrée/sortie entraînant l’échec d’un chargement. URLStream.load()httpResponseStatus Distribué si un appel de la méthode URLStream.load() tente d’accéder aux données via HTTP, et si Adobe AIR est capable de détecter et de renvoyer le code d’état de la requête.flash.events.HTTPStatusEvent.HTTP_RESPONSE_STATUSflash.events.HTTPStatusEvent Distribué si un appel de la méthode URLStream.load() tente d’accéder aux données via HTTP, et si Adobe AIR est capable de détecter et de renvoyer le code d’état de la requête.

Si un objet URLStream s’inscrit à un événement httpStatusEvent, les réponses aux erreurs sont livrées, même s’il s’agit de contenu. Par conséquent, au lieu de distribuer un événement ioError, l’objet URLStream distribue des événements progress et complete lorsque les données d’erreur sont chargées dans l’objet URLStream.

URLStream.load()
httpStatus Distribué si un appel de la méthode URLStream.load() tente d’accéder aux données via HTTP, et si Flash Player ou Adobe AIR est capable de détecter et de renvoyer le code d’état de la requête.flash.events.HTTPStatusEvent.HTTP_STATUSflash.events.HTTPStatusEvent Distribué si un appel de la méthode URLStream.load() tente d’accéder aux données via HTTP, et si Flash Player ou Adobe AIR est capable de détecter et de renvoyer le code d’état de la requête (certains environnements de navigateur ne sont pas capables de fournir cette information). Vous remarquerez que httpStatus (le cas échéant) sera envoyé avant (et en complément de) tout événement complete ou error. URLStream.load()securityError Distribué si un appel de la méthode URLStream.load() tente de charger des données d’un serveur en dehors d’un sandbox de sécurité.flash.events.SecurityErrorEvent.SECURITY_ERRORflash.events.SecurityErrorEvent Distribué si un appel de la méthode URLStream.load() tente de charger des données d’un serveur en dehors d’un sandbox de sécurité. URLStream.load()complete Distribué lorsque le chargement de données a abouti.flash.events.Event.COMPLETEflash.events.Event Distribué lorsque le chargement de données a abouti. close Ferme immédiatement le flux continu et annule le téléchargement.La fermeture du flux continu s’est révélée impossible ou ce flux n’a pas été ouvert. IOErrorflash.errors:IOError Ferme immédiatement le flux continu et annule le téléchargement. Après l’appel de la méthode close(), aucune donnée ne peut être lue dans le flux continu. load Amorce le téléchargement de l’URL spécifiée dans le paramètre request.Les objets URLRequest.requestHeader ne devraient pas contenir certains en-têtes de requête HTTP interdits. Pour plus d’informations, voir la description de la classe URLRequestHeader. ArgumentErrorArgumentErrorCette erreur peut se produire pour les raisons suivantes :
  1. Flash Player ou Adobe AIR ne peut pas convertir le paramètre URLRequest.data du format UTF8 au format MBCS. Cette erreur est concernée si l’objet URLRequest transmis à la méthode load() est configuré pour exécuter une opération GET et si System.useCodePage est réglé sur true.
  2. Flash Player ou Adobe AIR ne peut pas allouer de mémoire aux données POST. Cette erreur est applicable si l’objet URLRequest transmis à load est configuré pour exécuter une opération POST.
MemoryErrorflash.errors:MemoryError
Les fichiers SWF non approuvés au niveau local ne peuvent pas communiquer avec Internet. Pour contourner ce problème, reclassifiez le fichier SWF en tant que fichier local avec accès au réseau ou en tant que fichier approuvé. SecurityErrorSecurityErrorSi vous tentez de vous connecter à un port généralement réservé. 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. SecurityErrorSecurityErrorrequestflash.net:URLRequestObjet URLRequest indiquant l’URL à télécharger. Si la valeur de ce paramètre ou la propriété URLRequest.url de l’objet URLRequest transmis correspondent à null, l’application renvoie une erreur de pointeur Null.
Commence le téléchargement de l’URL spécifiée dans le paramètre request.

Remarque : si un fichier en cours de chargement contient des caractères non-ASCII (comme s’en trouvent dans de nombreuses langues autres que l’anglais), nous vous recommandons d’enregistrer le fichier en utilisant le codage UTF-8 ou UTF-16, plutôt que sous un format non-Unicode, ASCII par exemple.

Si le chargement échoue immédiatement, une exception IOError ou SecurityError (erreur de sécurité de fichier local comprise) décrivant l’échec est renvoyée. Dans le cas contraire, un événement open est distribué si le téléchargement de l’URL démarre correctement ou un événement d’erreur est distribué en cas d’erreur.

Par défaut, le fichier SWF appelant et l’URL chargée doivent se trouver dans le même domaine. Par exemple, un fichier SWF à l’adresse www.adobe.com peut charger uniquement des données provenant de sources situées aussi à l’adresse www.adobe.com. Pour charger des données à partir d’un autre domaine, placez un fichier de régulation d’URL sur le serveur hébergeant les données.

Dans Flash Player, vous ne pouvez pas vous connecter à des ports normalement 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.

Dans Flash Player, vous pouvez éviter qu’un fichier SWF n’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.

Dans Flash Player 10 et versions ultérieures, et dans AIR 1.5 et versions ultérieures, si vous utilisez un Content-Type en plusieurs parties (par exemple « multipart/form-data ») qui contient un chargement (indiqué par un paramètre « filename » dans un en-tête «content-disposition » au sein du corps POST), l’opération POST est soumise aux règles de sécurité appliquées aux chargements :

  • L’opération POST doit être effectuée en réponse à l’action d’un utilisateur, comme un clic de souris ou la pression d’une touche.
  • Si l’opération POST se fait entre plusieurs domaines (la cible POST ne se trouve pas sur le même serveur que le fichier SWF qui envoie la demande POST), le serveur cible doit fournir un fichier de régulation d’URL qui permette l’accès interdomaines.

Par ailleurs, la syntaxe de tous les Content-Type en plusieurs parties doit être correcte (selon la norme RFC2046). Si la syntaxe s’avère incorrecte, l’opération POST est soumise aux règles de sécurité appliquées aux chargements.

Le contenu AIR dans des sandbox non-applicatifs est également soumis à ces règles. Cependant, dans Adobe AIR, le contenu du sandbox de l’application (contenu installé avec l’application AIR) n’est pas soumis à ces limites de sécurité.

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

Dans AIR, un objet URLRequest peut enregistrer l’événement d’état httpResponse. Contrairement à l’événement httpStatus, l’événement httpResponseStatus est renvoyé avant toute donnée de réponse. De plus, l’événement httpResponseStatus inclut des valeurs pour les propriétés responseHeaders et responseURL (qui ne sont pas définies pour un événement httpStatus. Notez que httpResponseStatus (le cas échéant) est envoyé avant (et en complément de) tout événement complete ou error.

S’il existe un écouteur d’événement httpResponseStatus, le corps du message de réponse est toujours envoyé. En outre, le code d’état de la réponse HTTP distribue toujours un événement complete, qu’il indique un message de réussite ou un message d’erreur.

Dans AIR, s’il n’existe aucun écouteur d’événement httpResponseStatus, le comportement varie selon la version du fichier SWF d’AIR :

  • Pour le contenu SWF 9, le corps du message de la réponse HTTP est envoyé uniquement si le code d’état de la réponse HTTP indique que l’opération a réussi. Dans le cas contraire (si le code indique une erreur), le corps du message n’est pas envoyé et l’objet URLRequest distribue un événement IOError.
  • Pour le contenu SWF 10, le corps du message de la réponse HTTP est toujours envoyé. En cas d’erreur, l’objet URLRequest distribue un événement IOError.
completeflash.events:EventDistribué après le chargement effectif de données. S’il existe un écouteur d’événement httpResponseStatus, l’objet URLRequest distribue également un événement complete, que le code d’état de la réponse HTTP indique une réussite ou une erreur. Distribué après le chargement effectif de données.httpStatusflash.events:HTTPStatusEventSi l’accès s’effectue par HTTP et que l’environnement actuel permet l’obtention des codes d’état, il se peut que vous receviez ces événements en plus des événements complete ou error. Si l’accès s’effectue par HTTP et que l’environnement actuel permet l’obtention des codes d’état, il se peut que vous receviez ces événements en plus des événements complete ou error.httpResponseStatusflash.events:HTTPStatusEventDistribué si un appel de la méthode load() tente d’accéder aux données via HTTP et si Adobe AIR est capable de détecter et de renvoyer le code d’état de la requête. Distribué si un appel de la méthode load() tente d’accéder aux données via HTTP, et si Adobe AIR est capable de détecter et de renvoyer le code d’état de la requête.ioErrorflash.events:IOErrorEventL’opération de chargement n’a pu se terminer. L’opération de chargement n’a pu se terminer.openflash.events:EventDistribué lors du démarrage d’une opération de chargement. Distribué lors du démarrage d’une opération de chargement.securityErrorflash.events:SecurityErrorEventUne opération de chargement a tenté d’extraire des données à partir d’un serveur situé en dehors du sandbox de sécurité de l’appelant. Vous pouvez contourner le problème en utilisant un fichier de régulation au niveau du serveur. Une opération de chargement a tenté d’extraire des données d’un serveur situé hors du sandbox de sécurité de l’appelant.
readBoolean Lit une valeur booléenne dans le flux continu.Les données à lire sont insuffisantes. Si un fichier SWF local déclenche un avertissement de sécurité, Flash Player ne met pas les données URLStream à la disposition d’ActionScript. Dans ce cas, la propriété bytesAvailable renvoie 0 même si les données ont été reçues, et les éventuelles méthodes de lecture renvoient une exception EOFError. EOFErrorflash.errors:EOFErrorUne erreur d’E/S s’est produite dans le flux continu ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorLa valeur true est renvoyée si l’octet n’est pas nul, false dans le cas contraire. Boolean Lit une valeur booléenne dans le flux continu. Un seul octet est lu, et la valeur true est renvoyée s’il n’est pas nul, false dans le cas contraire. readByte Lit un octet signé dans le flux continu.Les données à lire sont insuffisantes. Si un fichier SWF local déclenche un avertissement de sécurité, Flash Player ne met pas les données URLStream à la disposition d’ActionScript. Dans ce cas, la propriété bytesAvailable renvoie 0 même si les données ont été reçues, et les éventuelles méthodes de lecture renvoient une exception EOFError. EOFErrorflash.errors:EOFErrorUne erreur d’E/S s’est produite dans le flux continu ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorLa valeur est comprise entre -128 et 127. int Lit un octet signé dans le flux continu.

La valeur renvoyée est comprise entre -128 et 127.

readBytes Lit les octets length des données dans le flux.Les données à lire sont insuffisantes. Si un fichier SWF local déclenche un avertissement de sécurité, Flash Player ne met pas les données URLStream à la disposition d’ActionScript. Dans ce cas, la propriété bytesAvailable renvoie 0 même si les données ont été reçues, et les éventuelles méthodes de lecture renvoient une exception EOFError. EOFErrorflash.errors:EOFErrorUne erreur d’E/S s’est produite dans le flux continu ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorbytesflash.utils:ByteArrayObjet ByteArray dont les données doivent être lues. offsetuint0Décalage associé à bytes en fonction duquel la lecture des données doit commencer. La valeur par défaut est 0. lengthuint0Nombre d’octets à lire. La valeur par défaut, 0, entraîne la lecture de toutes les données disponibles. Lit le nombre d’octets de données spécifié par le paramètre length dans le flux. Les octets sont lus dans l’objet ByteArray spécifié par le paramètre bytes, à partir des octets offset dans l’objet ByteArray. readDouble Lit un nombre à virgule flottante avec deux décimales, conforme à IEEE 754, dans le flux continu.Les données à lire sont insuffisantes. Si un fichier SWF local déclenche un avertissement de sécurité, Flash Player ne met pas les données URLStream à la disposition d’ActionScript. Dans ce cas, la propriété bytesAvailable renvoie 0 même si les données ont été reçues, et les éventuelles méthodes de lecture renvoient une exception EOFError. EOFErrorflash.errors:EOFErrorUne erreur d’E/S s’est produite dans le flux continu ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorNombre à virgule flottante à deux décimales, conforme à IEEE 754, dans le flux continu. Number Lit un nombre à virgule flottante avec deux décimales, conforme à IEEE 754, dans le flux continu. readFloat Lit un nombre à virgule flottante et à une décimale, conforme à IEEE 754, dans le flux continu.Les données à lire sont insuffisantes. Si un fichier SWF local déclenche un avertissement de sécurité, Flash Player ne met pas les données URLStream à la disposition d’ActionScript. Dans ce cas, la propriété bytesAvailable renvoie 0 même si les données ont été reçues, et les éventuelles méthodes de lecture renvoient une exception EOFError. EOFErrorflash.errors:EOFErrorUne erreur d’E/S s’est produite dans le flux continu ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorNombre à virgule flottante à une décimale, conforme à IEEE 754, dans le flux continu. Number Lit un nombre à virgule flottante et à une décimale, conforme à IEEE 754, dans le flux continu. readInt Lit un entier signé de 32 bits dans le flux continu.Les données à lire sont insuffisantes. Si un fichier SWF local déclenche un avertissement de sécurité, Flash Player ne met pas les données URLStream à la disposition d’ActionScript. Dans ce cas, la propriété bytesAvailable renvoie 0 même si les données ont été reçues, et les éventuelles méthodes de lecture renvoient une exception EOFError. EOFErrorflash.errors:EOFErrorUne erreur d’E/S s’est produite dans le flux continu ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorLa valeur est comprise entre -2147483648 et 2147483647. int Lit un entier signé de 32 bits dans le flux continu.

La valeur renvoyée est comprise entre -2147483648 et 2147483647.

readMultiByte Lit une chaîne à plusieurs octets de longueur spécifiée à partir du flux d’octets et à l’aide du jeu de caractères désigné.Les données à lire sont insuffisantes. Si un fichier SWF local déclenche un avertissement de sécurité, Flash Player ne met pas les données URLStream à la disposition d’ActionScript. Dans ce cas, la propriété bytesAvailable renvoie 0 même si les données ont été reçues, et les éventuelles méthodes de lecture renvoient une exception EOFError. EOFErrorflash.errors:EOFErrorChaîne au format UTF-8. StringlengthuintNombre d’octets à lire dans le flux d’octets. charSetStringChaîne désignant le le jeu de caractères à utiliser pour interpréter les octets. Parmi les chaînes de jeu de caractères supportées figurent "shift_jis", "CN-GB", "iso-8859-1", etc. Pour obtenir la liste complète, voir la section Jeux de caractères pris en charge.

Remarque : si la valeur du paramètre charSet n’est pas reconnue par le système actuel, l’application utilise la page de code par défaut du système comme jeu de caractères. Par exemple, une valeur pour le paramètre charSet, comme dans myTest.readMultiByte(22, "iso-8859-01") qui utilise 01 au lieu de 1 pourra éventuellement fonctionner sur votre poste de développement, mais pas sur un autre poste. Sur l’autre ordinateur, l’application utilisera la page de code par défaut du système.

Lit une chaîne à plusieurs octets de longueur spécifiée à partir du flux d’octets et à l’aide du jeu de caractères désigné.
readObject Lit dans le socket un objet codé au format AMF (Action Message Format).Les données à lire sont insuffisantes. Si un fichier SWF local déclenche un avertissement de sécurité, Flash Player ne met pas les données URLStream à la disposition d’ActionScript. Dans ce cas, la propriété bytesAvailable renvoie 0 même si les données ont été reçues, et les éventuelles méthodes de lecture renvoient une exception EOFError. EOFErrorflash.errors:EOFErrorUne erreur d’E/S s’est produite dans le flux continu ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorObjet désérialisé. Lit dans le socket un objet codé au format AMF (Action Message Format). ObjectEncodingreadShort Lit un entier signé de 16 bits dans le flux continu.Les données à lire sont insuffisantes. Si un fichier SWF local déclenche un avertissement de sécurité, Flash Player ne met pas les données URLStream à la disposition d’ActionScript. Dans ce cas, la propriété bytesAvailable renvoie 0 même si les données ont été reçues, et les éventuelles méthodes de lecture renvoient une exception EOFError. EOFErrorflash.errors:EOFErrorUne erreur d’E/S s’est produite dans le flux continu ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorLa valeur est comprise entre -32768 et 32767. int Lit un entier signé de 16 bits dans le flux continu.

La valeur renvoyée est comprise entre -32768 et 32767.

readUTFBytes Lit une séquence d’octets UTF-8 length dans le flux et renvoie une chaîne.Les données à lire sont insuffisantes. Si un fichier SWF local déclenche un avertissement de sécurité, Flash Player ne met pas les données URLStream à la disposition d’ActionScript. Dans ce cas, la propriété bytesAvailable renvoie 0 même si les données ont été reçues, et les éventuelles méthodes de lecture renvoient une exception EOFError. EOFErrorflash.errors:EOFErrorUne erreur d’E/S s’est produite dans le flux continu ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorChaîne UTF-8 de longueur spécifiée, générée par la représentation des caractères sous forme d’octets. StringlengthuintSéquence d’octets UTF-8. Lit une séquence d’octets UTF-8 length dans le flux et renvoie une chaîne. readUTF Lit une chaîne UTF-8 dans le flux continu.Les données à lire sont insuffisantes. Si un fichier SWF local déclenche un avertissement de sécurité, Flash Player ne met pas les données URLStream à la disposition d’ActionScript. Dans ce cas, la propriété bytesAvailable renvoie 0 même si les données ont été reçues, et les éventuelles méthodes de lecture renvoient une exception EOFError. EOFErrorflash.errors:EOFErrorUne erreur d’E/S s’est produite dans le flux continu ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorChaîne UTF-8. String Lit une chaîne UTF-8 dans le flux continu. La chaîne doit être précédée d’un caractère non signé indiquant la longueur en octets. readUnsignedByte Lit un octet non signé dans le flux continu.Les données à lire sont insuffisantes. Si un fichier SWF local déclenche un avertissement de sécurité, Flash Player ne met pas les données URLStream à la disposition d’ActionScript. Dans ce cas, la propriété bytesAvailable renvoie 0 même si les données ont été reçues, et les éventuelles méthodes de lecture renvoient une exception EOFError. EOFErrorflash.errors:EOFErrorUne erreur d’E/S s’est produite dans le flux continu ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorLa valeur est comprise entre 0 et 255. uint Lit un octet non signé dans le flux continu.

La valeur renvoyée est comprise entre 0 et 255.

readUnsignedInt Lit un entier de 32 bits non signé dans le flux continu.Les données à lire sont insuffisantes. Si un fichier SWF local déclenche un avertissement de sécurité, Flash Player ne met pas les données URLStream à la disposition d’ActionScript. Dans ce cas, la propriété bytesAvailable renvoie 0 même si les données ont été reçues, et les éventuelles méthodes de lecture renvoient une exception EOFError. EOFErrorflash.errors:EOFErrorUne erreur d’E/S s’est produite dans le flux continu ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorLa valeur est comprise entre 0 et 4294967295. uint Lit un entier de 32 bits non signé dans le flux continu.

La valeur renvoyée est comprise entre 0 et 4294967295.

readUnsignedShort Lit un entier de 16 bits non signé dans le flux continu.Les données à lire sont insuffisantes. Si un fichier SWF local déclenche un avertissement de sécurité, Flash Player ne met pas les données URLStream à la disposition d’ActionScript. Dans ce cas, la propriété bytesAvailable renvoie 0 même si les données ont été reçues, et les éventuelles méthodes de lecture renvoient une exception EOFError. EOFErrorflash.errors:EOFErrorUne erreur d’E/S s’est produite dans le flux continu ou ce dernier n’est pas ouvert. IOErrorflash.errors:IOErrorLa valeur est comprise entre 0 et 65535. uint Lit un entier de 16 bits non signé dans le flux continu.

La valeur renvoyée est comprise entre 0 et 65535.

bytesAvailable Renvoie le nombre d’octets de données disponibles pour la lecture dans le tampon de saisie.uint Renvoie le nombre d’octets de données disponibles pour la lecture dans le tampon de saisie. Votre code doit appeler la propriété bytesAvailable pour garantir que les données disponibles sont suffisantes, avant leur lecture à l’aide d’une des méthodes read. connected Indique si l’objet URLStream est actuellement connecté.Boolean Indique si l’objet URLStream est actuellement connecté. Un appel de cette propriété renvoie la valeur true si l’objet URLStream est connecté, false dans le cas contraire. endian Indique l’ordre d’octet des données.StringEndian.BIG_ENDIAN Indique l’ordre d’octet des données. Les valeurs possibles sont Endian.BIG_ENDIAN ou Endian.LITTLE_ENDIAN. flash.utils.EndianobjectEncoding Contrôle la version du format AMF (Action Message Format) utilisé lors de l’écriture ou de la lecture d’un objet.uint Contrôle la version du format AMF (Action Message Format) utilisé lors de l’écriture ou de la lecture d’un objet. readObject()Classe ObjectEncoding
NetGroupSendMode La classe NetGroupSendMode est une énumération des valeurs constantes utilisées pour le paramètre sendMode de la méthode NetGroup.sendToNeighbor().Enumération des valeurs constantes utilisées pour le paramètre sendMode de la méthode sendToNeighbor() dans la classe NetGroup. méthode de la classe NetGroup Object La classe NetGroupSendMode est une énumération des valeurs constantes utilisées pour le paramètre sendMode de la méthode NetGroup.sendToNeighbor(). flash.net.NetGroup.sendToNeighbor()NEXT_DECREASING Spécifie le voisin avec l’adresse de groupe la plus proche dans le sens descendant.nextDecreasingString Spécifie le voisin avec l’adresse de groupe la plus proche dans le sens descendant. NEXT_INCREASING Spécifie le voisin avec l’adresse de groupe la plus proche dans le sens ascendant.nextIncreasingString Spécifie le voisin avec l’adresse de groupe la plus proche dans le sens ascendant. SharedObject La classe SharedObject est utilisée pour lire et stocker des quantités limitées de données sur l’ordinateur d’un utilisateur ou sur un serveur.flash.events:EventDispatcher La classe SharedObject est utilisée pour lire et stocker des quantités limitées de données sur l’ordinateur d’un utilisateur ou sur un serveur. Les objets partagés permettent le partage en temps réel de plusieurs fichiers et objets SWF clients qui sont stockés en permanence sur l’ordinateur local ou sur un serveur distant. Les objets partagés locaux sont identiques aux cookies des navigateurs et les objets partagés distants sont identiques aux périphériques de transfert de données en temps réel. Pour utiliser des objets partagés distants, vous avez besoin d’Adobe Flash Media Server.

Utilisez des objets partagés lorsque vous devez :

  • Conserver la persistance locale. Il s’agit de la méthode la plus simple pour utiliser un objet partagé. Elle ne requiert pas Flash Media Server. Par exemple, vous pouvez appeler SharedObject.getLocal() pour créer un objet partagé dans une application, par exemple une calculatrice avec mémoire. Lorsque l’utilisateur ferme la calculatrice, Flash Player enregistre la dernière valeur dans un objet partagé dans l’ordinateur de l’utilisateur. Lors de sa prochaine exécution, la calculatrice contiendra la valeur précédente. En revanche, si vous réglez les propriétés de l’objet partagé sur null avant la fermeture de la calculatrice, lors de sa prochaine exécution, elle ne contiendra aucune valeur. Un autre exemple de conservation de la persistance locale consiste à assurer le suivi des préférences utilisateur ou d’autres données pour un site Web complexe, tel que l’enregistrement des articles lus par un utilisateur dans un site d’actualités. Le suivi de ces informations vous permet de différencier l’affichage des articles déjà lus de ceux qui sont nouveaux ou non lus. Le stockage de ces informations dans l’ordinateur de l’utilisateur réduit la charge du serveur.
  • Stockage et partage des données sur Flash Media Server. Un objet partagé peut stocker des données sur le serveur pour que d’autres clients les y récupèrent. Par exemple, appelez SharedObject.getRemote() pour créer un objet partagé distant, tel qu’une liste téléphonique, persistant sur le serveur. Chaque fois qu’un client modifie l’objet partagé, les données modifiées sont mises à la disposition de tous les clients actuellement connectés à l’objet ou qui s’y connectent ultérieurement. Si l’objet est également persistant localement et qu’un client change ses données alors qu’il n’est pas connecté au serveur, les données sont copiées dans l’objet partagé distant dès que le client se connecte à cet objet.
  • Partage des données en temps réel. Un objet partagé peut partager des données en temps réel entre plusieurs clients. Vous pouvez, par exemple, ouvrir un objet partagé distant qui stocke la liste des utilisateurs connectés à une salle de conversation accessible à tous les clients connectés à l’objet. Lorsqu’un utilisateur entre dans la salle de conversation ou en sort, l’objet est mis à jour et la liste révisée des utilisateurs de la salle est visible par tous les clients connectés à l’objet.

Pour créer un objet partagé local, appelez SharedObject.getLocal(). Pour créer un objet partagé distant, appelez SharedObject.getRemote().

A la fermeture d’une application, les objets partagés sont purgés ou écrits sur un disque. Vous pouvez également appeler la méthode flush() pour écrire explicitement les données sur un disque.

Eléments importants relatifs à l’espace disque local. Les objets partagés locaux possèdent certaines restrictions dont vous devez absloment tenir compte lors de la conception de votre application. Certains fichiers SWF ne sont pas autorisés à écrire des objets partagés locaux et certaines données stockées dans des objets partagés locaux sont parfois supprimées à votre insu. Les utilisateurs de Flash Player peuvent gérer l’espace disque disponible pour des domaines spécifiques ou l’ensemble des domaines. Lorsque des utilisateurs réduisent la quantité d’espace disque disponible, certains objets locaux partagés risquent d’être supprimés. Les utilisateurs de Flash Player disposent également de contrôles de confidentialité qui peuvent empêcher les domaines tiers (autres que celui figurant dans la barre d’adresse du navigateur) de lire ou d’écrire des objets partagés locaux.

Remarque : les fichiers SWF stockés et exécutés sur un ordinateur local, et non à partir d’un serveur distant, peuvent toujours écrire des objets partagés par un tiers sur un disque. Pour plus d’informations sur les objets partagés par un tiers, voir Panneau Paramètres globaux d’enregistrement dans l’aide de Flash Player.

Il est toujours conseillé de vérifier les défaillances relatives à la quantité d’espace disque et au contrôle de la confidentialité des utilisateurs. Effectuez ces vérifications lorsque vous appelez getLocal() et flush() :

  • SharedObject.getLocal() — Flash Player renvoie une exception lors de l’échec d’un appel de cette méthode, par exemple lorsque l’utilisateur a désactivé les objets partagés par un tiers et que le domaine de votre fichier SWF ne correspond pas à celui de la barre d’adresse du navigateur.
  • SharedObject.flush() — Flash Player renvoie une exception lors de l’échec d’un appel de cette méthode. Il renvoie SharedObjectFlushStatus.FLUSHED lorsque l’appel aboutit. Il renvoie SharedObjectFlushStatus.PENDING lorsque de l’espace disque supplémentaire est nécessaire. Flash Player invite l’utilisateur à allouer plus d’espace disque aux informations enregistrées localement. Par la suite, l’événement netStatus est distribué avec un objet d’informations indiquant si la purge a abouti ou échoué.

Si votre fichier SWF tente de créer ou modifier des objets partagés locaux, assurez-vous que le fichier SWF fait au moins 215 pixels de large et 138 pixels de haut (ce qui constitue les dimensions minimales d’affichage de la boîte de dialogue qui suggère à l’utilisateur d’augmenter sa limite locale de stockage des objets partagés locaux). Si votre fichier SWF est inférieur à ces dimensions et si une augmentation de la limite de stockage est nécessaire, SharedObject.flush() échoue, renvoie SharedObjectFlushedStatus.PENDING et distribue l’événement netStatus.

Objets partagés distants. Flash Media Server vous permet de créer et d’utiliser des objets partagés distants, partagés en temps réel par tous les clients connectés à votre application. Lorsqu’un client modifie une propriété d’un objet partagé distant, cette propriété est modifiée pour tous les clients connectés. Vous pouvez utiliser des objets partagés distants pour synchroniser des clients, par exemple les utilisateurs d’un jeu multi-joueurs.

Chaque objet partagé distant possède une propriété data correspondant à un Objet avec propriétés qui stocke des données. Appelez setProperty() pour modifier une propriété de l’objet de données. Le serveur met à jour les propriétés, envoie un événement sync, puis renvoie les propriétés aux clients connectés.

Vous pouvez choisir de rendre les objets partagés distants persistant sur le client, sur le serveur ou sur les deux. Par défaut, Flash Player enregistre localement les objets partagés distants persistants dont la taille est inférieure à 100 Ko. Lorsque vous tentez d’enregistrer un objet plus volumineux, Flash Player ouvre une boite de dialogue de stockage local qui permet à l’utilisateur d’autoriser ou d’interdire le stockage local de l’objet partagé. Assurez-vous que la taille de votre scène est d’au moins 215 x 138 pixels ; il s’agit de la taille minimale requise par Flash pour afficher cette boîte de dialogue.

Si l’utilisateur sélectionne Autoriser, le serveur enregistre l’objet partagé et distribue un événement netStatus avec la propriété code SharedObject.Flush.Success. Si l’utilisateur sélectionne Refuser, le serveur enregistre l’objet partagé et distribue un événement netStatus avec la propriété code SharedObject.Flush.Failed.

Le code suivant crée (et lors des ses prochaines exécutions, récupère) un objet partagé en utilisant l’ID "application-name". Lorsqu’un utilisateur clique sur le bouton Enregistrer, la méthode saveValue() tente d’enregistrer une propriété appelée savedValue dans la propriété data de l’objet SharedObject. Si Flash Player doit demander l’autorisation d’enregistrer les données, la méthodeonFlushStatus() est appelée lorsque l’utilisateur accorde ou refuse l’opération. Lorsqu’un utilisateur clique sur le bouton Effacer, la méthode clearValue() efface la valeur enregistrée dans savedValue. Au prochain chargement du fichier SWF, la valeurundefined est récupérée. package { import flash.display.Sprite; import flash.events.MouseEvent; import flash.events.NetStatusEvent; import flash.net.SharedObject; import flash.net.SharedObjectFlushStatus; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFieldType; public class SharedObjectExample extends Sprite { private var mySo:SharedObject; public function SharedObjectExample() { buildUI(); saveBtn.addEventListener(MouseEvent.CLICK, saveValue); clearBtn.addEventListener(MouseEvent.CLICK, clearValue); mySo = SharedObject.getLocal("application-name"); output.appendText("SharedObject loaded...\n"); output.appendText("loaded value: " + mySo.data.savedValue + "\n\n"); } private function saveValue(event:MouseEvent):void { output.appendText("saving value...\n"); mySo.data.savedValue = input.text; var flushStatus:String = null; try { flushStatus = mySo.flush(10000); } catch (error:Error) { output.appendText("Error...Could not write SharedObject to disk\n"); } if (flushStatus != null) { switch (flushStatus) { case SharedObjectFlushStatus.PENDING: output.appendText("Requesting permission to save object...\n"); mySo.addEventListener(NetStatusEvent.NET_STATUS, onFlushStatus); break; case SharedObjectFlushStatus.FLUSHED: output.appendText("Value flushed to disk.\n"); break; } } output.appendText("\n"); } private function clearValue(event:MouseEvent):void { output.appendText("Cleared saved value...Reload SWF and the value should be \"undefined\".\n\n"); delete mySo.data.savedValue; } private function onFlushStatus(event:NetStatusEvent):void { output.appendText("User closed permission dialog...\n"); switch (event.info.code) { case "SharedObject.Flush.Success": output.appendText("User granted permission -- value saved.\n"); break; case "SharedObject.Flush.Failed": output.appendText("User denied permission -- value not saved.\n"); break; } output.appendText("\n"); mySo.removeEventListener(NetStatusEvent.NET_STATUS, onFlushStatus); } // UI elements private var inputLbl:TextField; private var input:TextField; private var output:TextField; private var saveBtn:Sprite; private var clearBtn:Sprite; private function buildUI():void { // input label inputLbl = new TextField(); addChild(inputLbl); inputLbl.x = 10; inputLbl.y = 10; inputLbl.text = "Value to save:"; // input TextField input = new TextField(); addChild(input); input.x = 80; input.y = 10; input.width = 100; input.height = 20; input.border = true; input.background = true; input.type = TextFieldType.INPUT; // output TextField output = new TextField(); addChild(output); output.x = 10; output.y = 35; output.width = 250; output.height = 250; output.multiline = true; output.wordWrap = true; output.border = true; output.background = true; // Save button saveBtn = new Sprite(); addChild(saveBtn); saveBtn.x = 190; saveBtn.y = 10; saveBtn.useHandCursor = true; saveBtn.graphics.lineStyle(1); saveBtn.graphics.beginFill(0xcccccc); saveBtn.graphics.drawRoundRect(0, 0, 30, 20, 5, 5); var saveLbl:TextField = new TextField(); saveBtn.addChild(saveLbl); saveLbl.text = "Save"; saveLbl.selectable = false; // Clear button clearBtn = new Sprite(); addChild(clearBtn); clearBtn.x = 230; clearBtn.y = 10; clearBtn.useHandCursor = true; clearBtn.graphics.lineStyle(1); clearBtn.graphics.beginFill(0xcccccc); clearBtn.graphics.drawRoundRect(0, 0, 30, 20, 5, 5); var clearLbl:TextField = new TextField(); clearBtn.addChild(clearLbl); clearLbl.text = "Clear"; clearLbl.selectable = false; } } }
flush()getLocal()netStatussync Distribué lorsqu’un objet partagé distant a été mis à jour par le serveur.flash.events.SyncEvent.SYNCflash.events.SyncEvent Distribué lorsqu’un objet partagé distant a été mis à jour par le serveur. getRemote()netStatus Distribué lorsqu’une occurrence de SharedObject publie son état ou signale une erreur.flash.events.NetStatusEvent.NET_STATUSflash.events.NetStatusEvent Distribué lorsqu’une occurrence de SharedObject publie son état ou signale une erreur. L’événement netStatus renferme une propriété info, composée d’un objet d’informations contenant des renseignements spécifiques sur l’événement, telles que la réussite ou l’échec d’une tentative de connexion ou la réussite de l’écriture de l’objet partagé dans le disque dur local. flash.events.NetStatusEvent.infoasyncError Distribué lorsqu’une erreur est renvoyée de manière asynchrone ; autrement dit, lorsqu’elle provient du code asynchrone natif.flash.events.AsyncErrorEvent.ASYNC_ERRORflash.events.AsyncErrorEvent Distribué lorsqu’une erreur est renvoyée de manière asynchrone ; autrement dit, lorsqu’elle provient du code asynchrone natif. clear Dans le cas d’un objet partagé local, cette méthode purge toutes les données et supprime l’objet du disque. Dans le cas d’un objet partagé local, cette méthode purge toutes les données et supprime l’objet du disque. La référence à l’objet partagé reste active, mais ses propriétés data sont effacées.

Pour les objets partagés distants utilisés avec Flash Media Server, clear() déconnecte l’objet et purge toutes ses données. Si l’objet partagé est persistant localement, cette méthode le supprime également du disque. La référence à l’objet partagé reste active, mais ses propriétés data sont effacées.

Le code suivant crée (et lors des ses prochaines exécutions, récupère) un objet SharedObject en utilisant l’ID hostName. Une propriété appelée username est ajoutée à la propriété data de l’objet SharedObject. La méthode clear() qui est appelée pour finir, efface toutes les informations ajoutées à l’objet data (dans ce cas, une propriété appelée username). package { import flash.net.SharedObject; public class SharedObject_clear { private var hostName:String = "yourDomain"; private var username:String = "yourUsername"; public function SharedObject_clear() { var mySo:SharedObject = SharedObject.getLocal(hostName); if(mySo.data.username == null) { mySo.data.username = username; trace("set: " + mySo.data.username); // yourUsername } else { mySo.clear(); trace("cleared: " + mySo.data.username); // undefined } } } }
close Ferme la connexion entre un objet partagé distant et le serveur. Ferme la connexion entre un objet partagé distant et le serveur. Si un objet partagé distant est persistant localement, l’utilisateur peut modifier la copie locale de l’objet après l’appel de cette méthode. Toute modification apportée à l’objet local est envoyée au serveur à la prochaine connexion de l’utilisateur à l’objet partagé distant. connect Se connecte à un objet partagé distant sur un serveur par l’intermédiaire d’un objet NetConnection spécifié.Flash Player n’a pas réussi à se connecter à l’objet partagé distant spécifié. Assurez-vous que l’occurrence de NetConnection est valide et connectée, et que l’objet partagé distant a été créé sur le serveur. ErrorErrormyConnectionflash.net:NetConnectionObjet NetConnection qui utilise le protocole RTMP (Real-Time Messaging Protocol), tel qu’un objet NetConnection utilisé pour communiquer avec Flash Media Server. paramsStringnullChaîne définissant le message à transmettre à l’objet partagé distance sur le serveur. Ne peut pas être utilisé avec Flash Media Server. Se connecte à un objet partagé distant sur un serveur par l’intermédiaire d’un objet NetConnection spécifié. Utilisez cette méthode après un appel à getRemote(). Lorsque la connexion est réussie, l’événement sync est distribué.

Avant de tenter d’utiliser un objet partagé distant, commencez par vérifier la présence d’erreurs éventuelles à l’aide d’une instruction try..catch..finally. Ensuite, écoutez et gérez l’événement sync avant de modifier l’objet partagé. Toute modification effectuée localement, avant la distribution de l’événement sync, peut être perdue.

Appelez la méthode connect() pour vous connecter à un objet partagé distant, par exemple :

var myRemoteSO:SharedObject = SharedObject.getRemote("mo", myNC.uri, false); myRemoteSO.connect(myNC);
getRemote()synctry..catch..finallyNetConnection
flush Ecrit immédiatement un objet partagé persistant localement dans un fichier local.Flash Player ne peut pas écrire l’objet partagé sur le disque. Cette erreur est susceptible de se produire si l’utilisateur a interdit définitivement le stockage des informations locales pour les objets de ce domaine.

Remarque : un contenu local peut toujours écrire sur un disque des objets partagés en provenance de domaines tiers (autres que celui de la barre d’adresse actuelle du navigateur), même s’il est interdit à un domaine tiers d’écrire des objets partagés sur un disque.

ErrorError
L’une des valeurs suivantes :
  • SharedObjectFlushStatus.PENDING : l’utilisateur a autorisé l’enregistrement des informations locales pour les objets de ce domaine, mais l’espace affecté est insuffisant pour enregistrer l’objet. Flash Player invite l’utilisateur à affecter davantage d’espace. Pour laisser croître l’espace de l’objet partagé lorsqu’il est enregistré, et éviter ainsi le renvoi de la valeur SharedObjectFlushStatus.PENDING, transmettez une valeur pour minDiskSpace.
  • SharedObjectFlushStatus.FLUSHED : l’objet partagé a bien été écrit dans un fichier du disque local.
String
minDiskSpaceint0Quantité minimale d’espace disque, en octets, à allouer à cet objet.
Ecrit immédiatement un objet partagé persistant localement dans un fichier local. Si vous n’utilisez pas cette méthode, Flash écrit l’objet partagé dans un fichier lorsque la session d’objet partagé se termine, c’est-à-dire lorsque le fichier SWF est fermé, lorsque l’objet partagé est effacé par l’outil de nettoyage de la mémoire car il n’est plus associé à aucune référence ou lorsque vous appelez SharedObject.clear() ou SharedObject.close().

Si cette méthode renvoie SharedObjectFlushStatus.PENDING, Flash Player ouvre une boîte de dialogue demandant à l’utilisateur d’augmenter la quantité d’espace disque disponible pour les objets de ce domaine. Pour ménager un espace permettant à la taille de l’objet partagé de croître lors d’un enregistrement ultérieur, évitant ainsi des valeurs renvoyées de PENDING, transmettez une valeur à minDiskSpace. Lorsque Flash Player tente d’écrire le fichier, il recherche le nombre d’octets transmis à minDiskSpace plutôt que l’espace nécessaire à l’enregistrement de l’objet partagé à sa taille actuelle.

Par exemple, si vous pensez qu’un objet partagé atteindra une taille maximale de 500 octets, même s’il est au départ beaucoup plus petit, transmettez 500 à minDiskSpace. Le cas échéant, Flash demandera à l’utilisateur d’affecter 500 octets d’espace disque à l’objet partagé. Une fois que l’utilisateur affecte l’espace nécessaire, Flash ne demande pas davantage d’espace lors des prochaines tentatives de purge de l’objet (tant que sa taille ne dépasse pas les 500 octets).

Une fois que l’utilisateur a répondu dans la boîte de dialogue, cette méthode est de nouveau appelée. Un événement netStatus est distribué avec une propriété code SharedObject.Flush.Success ou SharedObject.Flush.Failed.

Le code suivant crée (et lors des ses prochaines exécutions, récupère) un objet SharedObject en utilisant l’ID hostName. Une propriété appelée username est ajoutée à la propriété data de l’objet SharedObject. La méthode flush() est appelée. Une vérification détermine ensuite si la chaîne pending ou une valeur booléenne true ou false a été renvoyée. N’oubliez pas que toutes les occurrences ouvertes de SharedObject sont automatiquement purgées à la fermeture de l’occurrence actuelle de Flash Player. package { import flash.net.SharedObject; public class SharedObject_flush { private var hostName:String = "yourDomain"; private var username:String = "yourUsername"; public function SharedObject_flush() { var mySo:SharedObject = SharedObject.getLocal(hostName); mySo.data.username = username; var flushResult:Object = mySo.flush(); trace("flushResult: " + flushResult); trace(mySo.data.username); // yourUsername } } }
clear()
getLocal Renvoie une référence à un objet partagé persistant localement qui est disponible uniquement pour le client actuel.Flash Player ne peut pas créer l’objet partagé pour une raison quelconque. Cette erreur est susceptible de se produire si la création d’objets partagés persistants et le stockage de contenu Flash en provenance de tiers sont interdits (ceci ne s’applique pas au contenu local). Les utilisateurs peuvent interdire les objets partagés persistants de tiers dans le panneau Paramètres globaux d’enregistrement du Gestionnaire de paramètres, situé à l’adresse http://www.adobe.com/support/documentation/fr/flashplayer/help/settings_manager03.html. ErrorErrorRéférence à un objet partagé qui est persistant localement et disponible uniquement pour le client actuel. Si Flash Player ne peut pas créer ni localiser l’objet partagé (par exemple, si localPath a été spécifié mais que son répertoire n’existe pas), cette méthode renvoie une exception. flash.net:SharedObjectnameStringNom de l’objet. Le nom peut comporter des barres obliques (/) ; par exemple, work/addresses est un nom admissible. Les espaces ne sont pas autorisés dans un nom d’objet partagé, ainsi que les caractères suivants :
  ~ % & \ ; : " ' , < > ? # 
  
localPathStringnullChemin complet ou partiel du fichier SWF qui a créé l’objet partagé, et qui détermine l’endroit où l’objet partagé sera stocké localement. Si vous omettez ce paramètre, le chemin complet est utilisé. secureBooleanfalseDétermine si l’accès à cet objet partagé est limité aux fichiers SWF reçus via une connexion HTTPS. Si votre fichier SWF est reçu via HTTPS, la valeur de ce paramètre a les effets suivants :
  • Si ce paramètre est défini sur true, Flash Player crée un nouvel objet partagé sécurisé ou obtient une référence à un objet partagé sécurisé existant. Cet objet sécurisé partagé peut uniquement être lu par des fichiers SWF ou écrit dans des fichiers SWF reçus via des HTTPS appelant SharedObject.getLocal() avec le paramètre secure défini sur true.
  • Si ce paramètre est défini sur false, Flash Player crée un objet partagé ou obtient une référence à un objet partagé existant, qui peut être lu ou écrit par des fichiers SWF reçus via des connexions autres que HTTPS.

Si votre fichier SWF est reçu via une connexion autre que HTTPS et que vous tentez de définir ce paramètre sur true, la création d’un nouvel objet partagé (ou l’accès à un objet partagé sécurisé précédemment créé) échoue et null est renvoyé. Quelle que soit la valeur de ce paramètre, les objets partagés créés sont comptabilisés dans la quantité d’espace disque total autorisée pour un domaine.

Le diagramme suivant indique comment utiliser le paramètre secure :

Renvoie une référence à un objet partagé persistant localement qui est disponible uniquement pour le client actuel. Si l’objet partagé n’existe pas encore, cette méthode en crée un. Si des valeurs transmises à getLocal() sont incorrectes ou si l’appel échoue, Flash Player renvoie une exception.

Le code suivant illustre la procédure d’attribution à une variable de la référence à l’objet partagé renvoyé :

var so:SharedObject = SharedObject.getLocal("savedData");

Remarque : si l’utilisateur a choisi de ne jamais autoriser l’enregistrement local pour ce domaine, l’objet n’est pas enregistré localement, même si une valeur est spécifiée pour localPath. L’exception à cette règle est le contenu local. Un contenu local peut toujours écrire des objets partagés en provenance de domaines tiers sur un disque (domaines autres que celui de la barre d’adresse actuelle du navigateur), même s’il est interdit à un domaine tiers d’écrire des objets partagés sur un disque.

Pour éviter les conflits de noms, Flash examine l’emplacement du fichier SWF qui crée l’objet partagé. Par exemple, si un fichier SWF à l’adresse www.myCompany.com/apps/stockwatcher.swf crée un objet partagé nommé portfolio, cet objet partagé n’entre pas en conflit avec un autre objet nommé portfolio qui a été créé par un fichier SWF à l’adresse www.yourCompany.com/photoshoot.swf, étant donné que les fichiers SWF proviennent de répertoires différents.

Bien que le paramètre localPath soit facultatif, vous devez réfléchir à son utilisation, en particulier si les autres fichiers SWF doivent accéder à l’objet partagé. Si les données dans l’objet partagé sont spécifiques à un fichier SWF qui ne sera pas déplacé dans un autre emplacement, l’utilisation de la valeur par défaut prend alors tout son sens. Si d’autres fichiers SWF nécessitent un accès à l’objet partagé ou si le fichier SWF qui crée l’objet partagé est déplacé ultérieurement, la valeur de ce paramètre peut alors affecter l’accessibilité de l’objet partagé. Par exemple, si vous créez un objet partagé en réglant localPath sur la valeur par défaut du chemin complet du fichier SWF, aucun autre fichier SWF ne pourra accéder à cet objet partagé. Si vous déplacez par la suite le fichier SWF d’origine dans un autre emplacement, il ne pourra plus accéder aux données déjà enregistrées dans l’objet partagé.

Pour éviter de limiter inopinément l’accès à un objet partagé, utilisez le paramètre localpath. La meilleure option consiste à définir le paramètre localPath sur /. Cette opération rend l’objet partagé accessible à tous les fichiers SWF du domaine, mais augmente la probabilité de conflits de noms avec d’autres objets partagés dans ce domaine. Une autre option, plus restrictive, consiste à faire suivre localPath de noms de dossier figurant dans le chemin complet du fichier SWF. Prenons l’exemple de l’objet partagé portfolio créé par le fichier SWF à l’adresse www.myCompany.com/apps/stockwatcher.swf. Vous pouvez régler le paramètre localPath sur /, /apps ou /apps/stockwatcher.swf. Vous devrez identifier l’option qui offre la meilleure flexibilité à votre application.

Lorsque vous employez cette méthode, tenez compte du modèle de sécurité suivant :

  • Vous ne pouvez pas accéder à des objets partagés en franchissant les limites sandbox.
  • Les utilisateurs peuvent limiter l’accès aux objets partagés via la boîte de dialogue Paramètres de Flash Player ou via le Gestionnaire des paramètres. Par défaut, une application peut créer des objets partagés contenant jusqu’à 100 Ko de données par domaine. Les administrateurs et les utilisateurs peuvent également limiter la capacité à écrire dans le système de fichiers.

Imaginons que vous publiez le contenu de fichiers SWF afin qu’il soit lu sous forme de fichiers locaux (fichiers SWF installés localement ou fichiers EXE) et que vous deviez accéder à un objet partagé spécifique à partir de plusieurs fichiers SWF locaux. Dans ce cas, sachez que, pour ce qui est des fichiers locaux, il est possible d’utiliser deux emplacements différents pour le stockage des objets partagés. Le domaine utilisé dépend des autorisations de sécurité accordées au fichier local qui a créé l’objet partagé. Les fichiers locaux peuvent avoir trois niveaux distincts d’autorisation :

  1. Accès au système de fichiers local uniquement
  2. Accès au réseau uniquement
  3. Accès au réseau et au système de fichiers local

Les fichiers locaux pouvant accéder au système de fichiers local (niveau 1 ou 3) stockent leurs objets partagés à un emplacement unique. Les fichiers locaux ne pouvant pas accéder au système de fichiers local (niveau 2) stockent leurs objets partagés dans un autre emplacement.

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.

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

getRemote Renvoie une référence à un objet partagé sur Flash Media Server auquel plusieurs clients peuvent accéder.Flash Player ne peut pas créer ni localiser l’objet partagé. Cette situation peut se produire si les paramètres remotePath et persistence ont été réglés sur des chemins inexistants. ErrorErrorRéférence à un objet pouvant être partagé entre plusieurs clients. flash.net:SharedObjectnameStringNom de l’objet partagé distant. Le nom peut comporter des barres obliques (); par exemple, work/addresses est un nom admissible. Les espaces ne sont pas autorisés dans un nom d’objet partagé, ainsi que les caractères suivants :
    ~ % & \ ; :  " ' , > ? ? #
remotePathStringnullURI du serveur sur lequel sera stocké l’objet partagé. Cette URI doit être identique à celle de l’objet NetConnection transmis à la méthode connect(). persistenceObjectfalseIndique si les attributs des propriétés data de l’objet partagé sont persistants localement et/ou à distance. Ce paramètre peut également indiquer l’emplacement de stockage local de l’objet partagé. Les valeurs possibles sont les suivantes :
  • La valeur false indique que l’objet partagé n’est pas persistant dans le client ou le serveur.
  • La valeur true indique que l’objet partagé est persistant dans le serveur uniquement.
  • Un chemin d’accès local partiel ou complet à l’objet partagé indique que ce dernier est persistant dans le client et le serveur. Dans le client, il est stocké dans le chemin spécifié. Sur le serveur, il est stocké dans un sous-répertoire du répertoire de l’application.

Remarque : si l’utilisateur a choisi de ne jamais autoriser l’enregistrement local pour ce domaine, l’objet n’est pas enregistré localement, même si un chemin local est spécifié à des fins de persistance. Pour plus d’informations, voir la description de la classe.

secureBooleanfalseDétermine si l’accès à cet objet partagé est limité aux fichiers SWF reçus via une connexion HTTPS. Pour plus d’informations, voir la description du paramètre secure dans la section consacrée à la méthode getLocal.
Renvoie une référence à un objet partagé sur Flash Media Server auquel plusieurs clients peuvent accéder. Si l’objet partagé distant n’existe pas encore, cette méthode en crée un.

Pour créer un objet partagé distant, appelez getRemote(), puis connect() pour connecter l’objet partagé distant au serveur, comme suit :

var nc:NetConnection = new NetConnection(); nc.connect("rtmp://somedomain.com/applicationName"); var myRemoteSO:SharedObject = SharedObject.getRemote("mo", nc.uri, false); myRemoteSO.connect(nc);

Pour confirmer la synchronisation des copies locale et distante de l’objet partagé, écoutez et gérez l’événement sync. Tous les clients qui souhaitent partager cet objet doivent transmettre les mêmes valeurs pour les paramètres name et remotePath.

Pour créer un objet partagé accessible au client actuel uniquement, utilisez SharedObject.getLocal().

connect()getLocal()
send Diffuse un message à tous les clients connectés à l’objet partagé distant, y compris au client qui a envoyé le message.argumentsUn ou plusieurs arguments : chaîne identifiant le message, le nom d’une ou de plusieurs fonctions de gestionnaire à joindre à l’objet partagé et des paramètres facultatifs de tout type. Le nom du gestionnaire ne peut avoir qu’un seul niveau (autrement dit, il ne peut pas être au format parent/enfant) et est relatif à l’objet partagé. Les arguments sont sérialisés et envoyés via la connexion, et le gestionnaire de destination les reçoit dans le même ordre. Si un paramètre représente un objet circulaire (une liste liée qui est circulaire, par exemple), l’utilitaire de sérialisation gère correctement les références.

Remarque : n’utilisez pas un terme réservé comme nom de fonction. myRemoteSO.send("close"), par exemple, se soldera par un échec.

Diffuse un message à tous les clients connectés à l’objet partagé distant, y compris au client qui a envoyé le message. Pour traiter le message et y répondre, créez une fonction de rappel associée à l’objet partagé.
setDirty Indique au serveur que la valeur d’une propriété a changé dans l’objet partagé.propertyNameStringNom de la propriété qui a changé. Indique au serveur que la valeur d’une propriété a changé dans l’objet partagé. Cette méthode marque les propriétés comme dirty, ce qui signifie qu’elles ont été modifiées.

Pour créer les propriétés d’un objet partagé, appelez SharedObject.setProperty().

La méthode SharedObject.setProperty() implémente setDirty(). Dans la plupart des cas, par exemple lorsque la valeur d’une propriété est de type primitif, comme String ou Number, appelez setProperty() plutôt que setDirty(). En revanche, lorsque la valeur d’une propriété est un objet qui contient ses propres propriétés, appelez setDirty() pour indiquer la modification d’une valeur dans l’objet.

SharedObject.data (propriété côté client)setProperty()
setProperty Met à jour la valeur d’une propriété dans un objet partagé et indique cette modification au serveur.propertyNameStringNom de la propriété de l’objet partagé. valueObjectnullValeur de la propriété (objet ActionScript) ou null pour supprimer la propriété. Met à jour la valeur d’une propriété dans un objet partagé et indique cette modification au serveur. La méthode setProperty() marque explicitement les propriétés comme modifiées (dirty).

Pour plus d’informations sur les objets partagés distants, voir la Documentation de Flash Media Server.

Remarque : La méthode SharedObject.setProperty() implémente la méthode setDirty(). Dans la plupart des cas, par exemple lorsque la valeur d’une propriété est de type primitif, comme String ou Number, utilisez setProperty() plutôt que setDirty(). En revanche, lorsque la valeur de la propriété est un objet qui contient ses propres propriétés, utilisez setDirty() pour indiquer la modification d’une valeur dans l’objet. De façon générale, il est conseillé d’appeler setProperty() plutôt que setDirty(), car setProperty() ne met à jour la valeur d’une propriété que lorsqu’elle a changé, tandis que setDirty() impose la synchronisation à tous les clients abonnés.

SharedObject.data (propriété côté client)
client Indique l’objet sur lequel des méthodes de rappel sont appelées.ObjectLa propriété client ne peut pas être réglée sur l’objet null. TypeErrorTypeError Indique l’objet sur lequel des méthodes de rappel sont appelées. L’objet par défaut est this. Si vous réglez la propriété client sur un autre objet, les méthodes de rappels sont appelées sur celui-ci. data Ensemble des attributs affectés à la propriété data de l’objet. Ces attributs peuvent être partagés et stockés.Object Ensemble des attributs affectés à la propriété data de l’objet. Ces attributs peuvent être partagés et stockés. Chaque attribut peut être un objet d’un quelconque type ActionScript ou JavaScript : tableau, nombre, valeur booléenne, ByteArray, XML, etc. Par exemple, les lignes suivantes affectent des valeurs à différents aspects d’un objet partagé : var items_array:Array = new Array(101, 346, 483); var currentUserIsAdmin:Boolean = true; var currentUserName:String = "Ramona"; var my_so:SharedObject = SharedObject.getLocal("superfoo"); my_so.data.itemNumbers = items_array; my_so.data.adminPrivileges = currentUserIsAdmin; my_so.data.userName = currentUserName; for (var prop in my_so.data) { trace(prop+": "+my_so.data[prop]); }

Tous les attributs de la propriété data d’un objet partagé sont enregistrés si l’objet est persistant, et l’objet partagé contient les informations suivantes :

userName: Ramona adminPrivileges: true itemNumbers: 101,346,483

Remarque : n’affectez pas directement de valeurs à la propriété data d’un objet partagé, tel que dans so.data = someValue car Flash Player ignore ces affectations.

Pour supprimer des attributs pour des objets partagés locaux, utilisez un code tel que delete so.data.attributeName. La définition d’un attribut sur null ou undefined pour un objet partagé local ne supprime pas l’attribut.

Pour créer des valeurs privées pour un objet partagé, valeurs qui ne sont disponibles que pour l’occurrence du client alors que l’objet est utilisé et qui ne sont pas enregistrées avec l’objet lorsqu’il est fermé, créez des propriétés qui ne sont pas nommées data pour les enregistrer, comme l’illustre l’exemple suivant :

var my_so:SharedObject = SharedObject.getLocal("superfoo"); my_so.favoriteColor = "blue"; my_so.favoriteNightClub = "The Bluenote Tavern"; my_so.favoriteSong = "My World is Blue"; for (var prop in my_so) { trace(prop+": "+my_so[prop]); }

L’objet partagé contient les données suivantes :

favoriteSong: My World is Blue favoriteNightClub: The Bluenote Tavern favoriteColor: blue data: [object Object]

Dans le cas d’objets partagés distants utilisés avec un serveur, tous les attributs de la propriété data sont accessibles à tous les clients connectés à l’objet partagé, et tous les attributs sont enregistrés si l’objet est persistant. Lorsqu’un client modifie la valeur d’un attribut, tous les clients voient ensuite la nouvelle valeur.

getLocal()
defaultObjectEncoding Encodage d’objet par défaut (version AMF) de tous les objets partagés locaux créés dans le fichier SWF.uint Encodage d’objet par défaut (version AMF) de tous les objets partagés locaux créés dans le fichier SWF. Lorsque les objets partagés locaux sont écrits sur le disque, la propriété SharedObject.defaultObjectEncoding indique la version AMF (Action Message Format) devant être utilisée : format ActionScript 3.0 (AMF3) ou format ActionScript 1.0 ou 2.0 (AMF0).

Pour plus d’informations sur l’encodage des objets, y compris sur les différences d’encodage des objets partagés selon qu’ils sont locaux ou distants, voir la description de la propriété objectEncoding.

La valeur par défaut de SharedObject.defaultObjectEncoding stipule l’utilisation du format ActionScript 3.0 (AMF3). Pour écrire des objets partagés locaux qui doivent être lus par des fichiers SWF ActionScript 2.0 ou 1.0, réglez SharedObject.defaultObjectEncoding sur flash.net.ObjectEncoding.AMF0 afin qu’elle utilise le format ActionScript 1.0 ou ActionScript 2.0, au début de votre script, avant de créer les objets. Tous les objets partagés locaux créés ultérieurement utiliseront l’encodage AMF0 et pourront interagir avec du contenu plus ancien. Après la création des objets partagés locaux, il est impossible de modifier leur valeur objectEncoding correspondante en définissant SharedObject.defaultObjectEncoding.

Pour configurer l’encodage objet par objet, plutôt que pour la totalité des objets partagés créés par le fichier SWF, définissez la propriété objectEncoding de l’objet concerné.

Propriété objectEncodingClasse ObjectEncoding
objectEncoding Encodage d’objet (version AMF) de cet objet partagé.uintVous avez tenté de définir la valeur de la propriété objectEncoding pour un objet partagé distant. Cette propriété est en lecture seule pour les objets partagés distants car sa valeur est déterminée par l’occurrence de NetConnection associée. ReferenceErrorReferenceError Encodage d’objet (version AMF) de cet objet partagé. Lors de l’écriture d’un objet partagé local sur le disque, la propriété objectEncoding indique la version AMF (Action Message Format) devant être utilisée : format ActionScript 3.0 (AMF3) ou format ActionScript 1.0 ou 2.0 (AMF0).

L’encodage d’objet est géré différemment selon que l’objet partagé est local ou distant.

  • Objets partagés locaux. Vous pouvez extraire ou définir la valeur de la propriété objectEncoding des objets partagés locaux. La valeur de la propriété objectEncoding a une incidence sur le formatage utilisé pour écrire l’objet local partagé. Si l’objet local partagé doit pouvoir être lu par des fichiers SWF ActionScript 2.0 ou 1.0, réglez objectEncoding sur ObjectEncoding.AMF0. Flash Player peut lire les objets partagés locaux AMF0 même si l’encodage d’objet écrit au format AMF3. En d’autres termes, si vous utilisez la valeur par défaut de cette propriété, ObjectEncoding.AMF3, votre fichier SWF peut néanmoins lire les objets partagés créés par les fichiers ActionScript 2.0 ou 1.0.
  • Objets partagés distants. Lorsqu’il est connecté au serveur, un objet partagé distant hérite de son paramètre objectEncoding de l’occurrence de NetConnection associée (utilisée pour la connexion à l’objet partagé distant). Lorsqu’il n’est pas connecté au serveur, un objet partagé distant hérite du paramètre defaultObjectEncoding de l’occurrence de NetConnection associée. Comme la valeur de la propriété objectEncoding de l’objet partagé distant est déterminée par l’occurrence de NetConnection, cette propriété est en lecture seule pour les objets partagés distants.
defaultObjectEncodingflash.net.ObjectEncoding
size Taille actuelle de l’objet partagé, en octets.uint Taille actuelle de l’objet partagé, en octets.

Flash calcule la taille d’un objet partagé en examinant toutes ses propriétés data ; plus un objet a de propriétés data, plus l’estimation de sa taille prend du temps. L’estimation de la taille de l’objet peut monopoliser beaucoup de temps de traitement. Il est donc recommandé d’éviter cette méthode à moins d’en avoir réellement besoin.

Le code suivant crée un objet SharedObject en utilisant l’ID "thehobbit". Une propriété appelée username est ajoutée à la propriété data de l’objet SharedObject. Le code assure ensuite le suivi de la propriété size, ce qui a pour effet de renvoyer la valeur indiquée. import flash.net.SharedObject; // if these get copied or not var mySo:SharedObject = SharedObject.getLocal("thehobbit"); mySo.data.username = "bilbobaggins"; trace(mySo.size); // 55
fps Indique la fréquence, en secondes, d’envoi au serveur des modifications apportées à un client.Number Indique la fréquence, en secondes, d’envoi au serveur des modifications apportées à un client.

Cette méthode vous permet de contrôler le trafic entre le client et le serveur. Si la connexion entre le client et le serveur est relativement lente, par exemple, réglez fps sur une valeur peu élevée. Inversement, si le client est connecté à une application multi-utilisateurs et que la vitesse des échanges est primordiale, réglez fps sur une valeur relativement élevée.

La définition de fps déclenchera un événement sync et actualisera toutes les modifications sur le serveur. Pour actualiser le serveur manuellement, définissez fps sur 0.

Les modifications ne sont envoyées au serveur qu’après la diffusion de l’événement sync. En d’autres termes, si le serveur réagit lentement, l’envoi des mises à jour risque d’être moins fréquent que ne le spécifie la valeur de cette propriété.

NetGroupInfo La classe NetGroupInfo spécifie les diverses statistiques de qualité de service (QoS) liées à la transmission sous-jacente de données RTMFP homologue à homologue d’un objet NetGroup.Object La classe NetGroupInfo spécifie les diverses statistiques de qualité de service (QoS) liées à la transmission sous-jacente de données RTMFP homologue à homologue d’un objet NetGroup. La propriété NetGroup.info renvoie une objet NetGroupInfo qui est un instantané de l’état QoS actuel. flash.net.NetGroup.infoflash.net.NetGroup.post()flash.net.NetGroup.sendToNearest()flash.net.NetGroup.sendToNeighbor()flash.net.NetGroup.sendToAllNeighbors()flash.net.NetGroup.addWantObjects()flash.net.NetGroup.writeRequestedObject()toString Renvoie une chaîne contenant les valeurs des propriétés de l’objet NetGroupInfo.Chaîne contenant les valeurs des propriétés de l’objet NetGroupInfo. StringRenvoie une valeur de texte répertoriant la liste des propriétés de cet objet NetGroupInfo. Renvoie une chaîne contenant les valeurs des propriétés de l’objet NetGroupInfo. objectReplicationReceiveBytesPerSecond Spécifie le débit, en octets par seconde, utilisé lorsque le nœud local reçoit les objets envoyés par les homologues via le système de réplication d’objets.Number Spécifie le débit, en octets par seconde, utilisé lorsque le nœud local reçoit les objets envoyés par les homologues via le système de réplication d’objets. flash.net.NetGroup.writeRequestedObject()objectReplicationSendBytesPerSecond Spécifie le débit, en octets par seconde, utilisé lorsque le système de réplication d’objets copie des objets du nœud local aux homologues.Number Spécifie le débit, en octets par seconde, utilisé lorsque le système de réplication d’objets copie des objets du nœud local aux homologues. flash.net.NetGroup.writeRequestedObject()postingReceiveControlBytesPerSecond Spécifie le débit, en octets par seconde, utilisé lorsque le nœud local reçoit les messages de surcharge de contrôle envoyés par les homologues.Number Spécifie le débit, en octets par seconde, utilisé lorsque le nœud local reçoit les messages de surcharge de contrôle envoyés par les homologues. flash.net.NetGroup.post()postingReceiveDataBytesPerSecond Spécifie le débit, en octets par seconde, utilisé lorsque le nœud local reçoit les données de publication envoyées par les homologues.Number Spécifie le débit, en octets par seconde, utilisé lorsque le nœud local reçoit les données de publication envoyées par les homologues. flash.net.NetGroup.post()postingSendControlBytesPerSecond Spécifie le débit, en octets par seconde, utilisé lorsque le nœud local envoie les messages de surcharge de contrôle aux homologues.Number Spécifie le débit, en octets par seconde, utilisé lorsque le nœud local envoie les messages de surcharge de contrôle aux homologues. flash.net.NetGroup.post()postingSendDataBytesPerSecond Spécifie le débit, en octets par seconde, utilisé lorsque le nœud local envoie les données de publication aux homologues.Number Spécifie le débit, en octets par seconde, utilisé lorsque le nœud local envoie les données de publication aux homologues. flash.net.NetGroup.post()routingReceiveBytesPerSecond Spécifie le débit, en octets par seconde, utilisé lorsque le nœud local reçoit les messages de routage direct envoyés par les homologues.Number Spécifie le débit, en octets par seconde, utilisé lorsque le nœud local reçoit les messages de routage direct envoyés par les homologues. flash.net.NetGroup.sendToNearest()flash.net.NetGroup.sendToNeighbor()flash.net.NetGroup.sendToAllNeighbors()routingSendBytesPerSecond Spécifie le débit, en octets par seconde, utilisé lorsque le nœud local envoie les messages de routage direct aux homologues.Number Spécifie le débit, en octets par seconde, utilisé lorsque le nœud local envoie les messages de routage direct aux homologues. flash.net.NetGroup.sendToNearest()flash.net.NetGroup.sendToNeighbor()flash.net.NetGroup.sendToAllNeighbors()URLLoaderDataFormat La classe URLLoaderDataFormat fournit des valeurs qui déterminent le mode de réception des données téléchargées.Object La classe URLLoaderDataFormat fournit des valeurs qui déterminent le mode de réception des données téléchargées. L’exemple suivant utilise la classe URLLoaderDataFormatExample pour afficher le format de données et l’état d’un fichier chargé à l’exécution. Pour ce faire, exécutez la procédure suivante :
  1. Le constructeur de classe crée une occurrence d’URLLoader nommée loader et une occurrence d’URLRequest nommée request, correspondant à l’emplacement et au nom du fichier à charger.
  2. L’objet loader est transmis à la méthode configureListeners(), qui ajoute des écouteurs à chacun des événements URLLoader pris en charge :
    • completeHandler() : détecte l’événement complete, distribué après le chargement réussi de TextFile.txt.
    • openHandler() : détecte l’événement open, distribué au démarrage du téléchargement (vers le lecteur) de TextFile.txt.
    • progressHandler() : détecte les événements progress, distribués à la réception des données au fur et à mesure du téléchargement.
    • securityErrorHandler() : détecte les événements securityError, distribués en cas d’accès au fichier texte au moyen d’un paramètre de sécurité de lecture locale incorrect.
    • httpStatusHandler() : détecte les événements httpStatusHandler qui ne seraient pas distribués dans ce cas, puisque TextFile.txt est un fichier local.
    • ioErrorHandler() : détecte les événements ioError, déclenchés uniquement en cas de problème grave lié au fichier (s’il est manquant, par exemple).
  3. L’objet request est ensuite transmis à la méthode loader.load() qui charge le fichier texte en mémoire à l’aide d’un objet DisplayObject.

Remarques :

  • vous devrez compiler le fichier SWF en réglant « Sécurité de lecture locale » sur « Accès aux fichiers locaux uniquement ».
  • Pour exécuter cet exemple, il est nécessaire de placer un fichier intitulé TextFile.txt dans le même répertoire que votre fichier SWF. Pour que cet exemple identifie des fichiers binaires ou des fichiers de données codés au format URL, vous devez fournir un fichier au format correct et remplacer TextFile.txt par le nom et l’emplacement du nouveau fichier.

package { import flash.display.Sprite; import flash.events.*; import flash.net.*; public class URLLoaderDataFormatExample extends Sprite { private var source:String = "TextFile.txt"; private var dataFormat:String = URLLoaderDataFormat.TEXT; public function URLLoaderDataFormatExample () { var loader:URLLoader = new URLLoader(); loader.dataFormat = dataFormat; configureListeners(loader); var request:URLRequest = new URLRequest(source); try { loader.load(request); } catch (error:Error) { trace("Error loading requested document: " + source); } } private function configureListeners(dispatcher:URLLoader):void { dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); } private function completeHandler(event:Event):void { var loader:URLLoader = URLLoader(event.target); switch(loader.dataFormat) { case URLLoaderDataFormat.TEXT : trace("completeHandler (text): " + loader.data); break; case URLLoaderDataFormat.BINARY : trace("completeHandler (binary): " + loader.data); break; case URLLoaderDataFormat.VARIABLES : trace("completeHandler (variables): " + loader.data); break; } } private function httpStatusHandler(event:Event):void { trace("httpStatusHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } private function openHandler(event:Event):void { trace("openHandler: " + event); } private function progressHandler(event:ProgressEvent):void { trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } } }
BINARY Indique que les données téléchargées doivent être reçues en tant que données binaires brutes.binaryString Indique que les données téléchargées doivent être reçues en tant que données binaires brutes. TEXT Indique que les données téléchargées doivent être reçues au format texte.textString Indique que les données téléchargées doivent être reçues au format texte. VARIABLES Indique que les données téléchargées doivent être reçues en tant que variables de code URL.variablesString Indique que les données téléchargées doivent être reçues en tant que variables de code URL.
NetStreamPlayTransitions La classe NetStreamPlayTransitions spécifie les chaînes valides pouvant être utilisées avec la propriété NetStreamPlayOptions.transition.Object La classe NetStreamPlayTransitions spécifie les chaînes valides pouvant être utilisées avec la propriété NetStreamPlayOptions.transition. Ces chaînes contrôlent le comportement utilisé pour effectuer une transition vers un nouveau flux ou pour lire un flux, selon le mode de transition utilisé. NetStreamPlayOptionsNetStream.play2()APPEND_AND_WAIT Crée une liste de lecture sans commencer à la lire à partir du premier flux continu.appendAndWaitString Crée une liste de lecture sans commencer à la lire à partir du premier flux continu.

Le mode de transition APPEND_AND_WAIT est utilisé avec la méthode NetStream.play2() pour créer une liste de lecture sans immédiatement commencer à la lire à partir du premier flux continu. Utilisez ce mode pour charger chaque élément de la liste de lecture, sauf le dernier. Lorsque vous chargez le dernier flux dans la liste de lecture, définissez le mode de transition sur RESUME. A ce stade, Flash Player commence la diffusion en continu et la lecture de la liste de lecture.

Vous pouvez utiliser ce mode pour créer une nouvelle liste de lecture ou reconstituer une liste de lecture après le rétablissement d’une connexion perdue. Pour créer une nouvelle liste de lecture, lorsque la méthode NetStream.play2() est appelée avec RESUME, Flash Player commence la diffusion en continu et la lecture à partir du premier flux ou de la position de début spécifiée. Pour rétablir une connexion perdue, lorsque vous appelez la méthode NetStream.play2() avec RESUME, Flash Player détermine le point d’interruption du flux et indique au serveur de lancer la diffusion en continu à partir de ce point. Le serveur est à son tour en mesure de déterminer le flux de la liste de lecture qui correspond à ce point, et commence la diffusion en continu à partir de ce point.

Ce mode de transition est l’inverse du mode APPEND, dans lequel la lecture démarre immédiatement à partir du premier flux.

APPENDRESUMENetStream.play2()
APPEND Ajoute le flux continu à une liste de lecture et commence la lecture avec le premier flux continu.appendString Ajoute le flux continu à une liste de lecture et commence la lecture avec le premier flux continu. Ce mode est similaire à la méthode NetStream.play() avec l’indicateur reset défini sur false.

Dans ce mode, Flash Media Server place en file d’attente le flux spécifié dans NetStreamPlayOptions.streamName à la fin de la liste de lecture et ignore le paramètre NetStreamPlayOptions.oldStreamName.

APPEND_AND_WAITNetStream.play()NetStream.play2()NetStreamPlayOptions.oldStreamNameNetStreamPlayOptions.streamName
RESET Efface tout appel de lecture précédent et lit immédiatement le flux spécifié.resetString Efface tout appel de lecture précédent et lit immédiatement le flux spécifié. Ce mode est similaire à la méthode NetStream.play() avec l’indicateur reset défini sur true (comportement par défaut de NetStream.play()).

Dans ce mode, le flux en cours de lecture est abandonné et la lecture du flux spécifié dans NetStreamPlayOptions.streamName commence. Le paramètre NetStreamPlayOptions.oldStreamName est ignoré.

NetStream.play()NetStream.play2()NetStreamPlayOptions.oldStreamNameNetStreamPlayOptions.streamName
RESUME Sollicite des données de la nouvelle connexion à partir du point où la précédente connexion s’est terminée.resumeString Sollicite des données de la nouvelle connexion à partir du point où la précédente connexion s’est terminée. Le mode RESUME aligne le flux continu à travers deux connexions afin qu’aucun artefact ou aucun saut ou ne soit observé dans la lecture vidéo. Utilisez ce mode lorsque vous reconnectez un flux continu qui a été abandonné en raison d’incidents sur le serveur ou d’autres problèmes de connexion. APPEND_AND_WAITNetStream.play2()STOP Arrête la lecture des flux d’une liste de lecture.stopString Arrête la lecture des flux d’une liste de lecture. Ce mode est similaire à la méthode NetStream.play(false). Il arrête et réinitialise la liste de lecture. NetStream.play()NetStream.play2()SWAP Remplace un flux de contenu par un autre flux de contenu et conserve le reste de la liste de lecture.swapString Remplace un flux de contenu par un autre flux de contenu et conserve le reste de la liste de lecture.

Ce mode remplace le flux continu spécifié dans NetStreamPlayOptions.oldStreamName par celui spécifié dans NetStreamPlayOptions.streamName. Le reste de la liste de lecture est conservé. Dans ce mode, Flash Media Server ne fait aucune hypothèse quant au contenu des flux et les traite comme un contenu différent.

Si oldStreamName n’a pas encore été envoyé, le serveur effectue le basculement au niveau de la limite du flux est envoie les bits de streamName à partir du début. Si le serveur a déjà commencé à envoyer les bits de oldStreamName, il ne bascule pas sur streamName et envoie un événement NetStream.Play.Failed.

Utilisez ce mode si les flux entre lesquels vous souhaitez basculer ne sont pas reliés entre eux et si leur contenu ou leurs longueurs diffèrent. Par exemple, utilisez ce mode lorsque vous souhaitez remplacer un message publicitaire par un autre en fonction du suivi effectué par l’utilisateur et des statistiques de visualisation de messages publicitaires antérieures.

Pour passer d’un flux à un autre de même contenu, utilisez plutôt le mode SWITCH.

SWITCHNetStreamPlayOptions.oldStreamNameNetStreamPlayOptions.streamName
SWITCH Passe de la lecture d’un flux à un autre, en général entre des flux de même contenu.switchString Passe de la lecture d’un flux à un autre, en général entre des flux de même contenu. Spécifiez les flux vers lesquels doit s’effectuer le basculement dans NetStreamPlayOptions.oldStreamName et NetStreamPlayOptions.streamName.

Utilisez ce mode lorsque vous souhaitez basculer vers un flux de même contenu, mais codé avec une autre vitesse de transmission ou une autre résolution. Par exemple, utilisez ce mode lorsque l’application place les flux en file d’attente dans une liste de lecture ou lit un flux unique avec une vitesse de transmission particulière, puis s’aperçoit que la disponibilité de la bande passante ou la capacité de traitement est inférieure ou supérieure aux exigences du flux de données. L’application peut alors actualiser les flux avec leurs versions de vitesse de transmission supérieure ou inférieure.

Dans ce mode, Flash Media Server fait des hypothèses quant à la relation entre les flux oldStreamName et streamName. Le serveur suppose que les flux contiennent le même contenu et ont le même intervalle d’images-clés mais des résolutions ou des vitesses de transmission différentes.

Lorsqu’une liste de lecture a été mise en file d’attente et que oldStreamName est un des flux de la liste de lecture ou est en cours de lecture, oldStreamName est remplacé par streamName.

Si oldStreamName est null ou undefined, ou s’il n’est pas détecté dans la liste de lecture, le serveur passe à streamName au niveau du prochain point logique, pour assurer un basculement transparent.

Pour passer d’un flux à un autre de contenu différent, utilisez plutôt le mode SWAP.

SWAPNetStreamPlayOptions.oldStreamNameNetStreamPlayOptions.streamName
NetConnection La classe NetConnection crée une connexion bidirectionnelle entre un client et un serveur.flash.events:EventDispatcher La classe NetConnection crée une connexion bidirectionnelle entre un client et un serveur. Le client peut être une application Flash Player ou AIR. Le serveur peut être un serveur Web, Flash Media Server, un serveur d’application exécutant Flash Remoting ou le service Adobe Stratus. Appelez NetConnection.connect() pour établir la connexion. Utilisez la classe NetStream pour envoyer des flux de données multimédias et des données via la connexion.

Pour obtenir des informations de sécurité sur le chargement de contenu et de données dans Flash Player et AIR, voir les références suivantes :

  • Pour charger du contenu et des données dans Flash Player à partir d’un serveur Web ou d’un emplacement local, voir la rubrique Sécurité du Pôle de développement de Flash Player (disponible en anglais uniquement).
  • Pour charger du contenu et des données dans Flash Player et AIR à partir de Flash Media Server, voir la documentation de Flash Media Server.
  • Pour charger du contenu et des données dans AIR, voir le Pôle de développement d’Adobe AIR (disponible en anglais uniquement).

Pour écrire des méthodes de rappel pour cette classe, étendez la classe et définissez les méthodes de rappel dans votre sous-classe, ou affectez la propriété client à un objet et définissez les méthodes de rappel sur cet objet.

L’exemple suivant utilise un objet Video avec les classes NetConnection et NetStream pour charger et lire un fichier FLV.

Dans cet exemple, le code qui crée les objets Video et NetStream et appelle les méthodes Video.attachNetStream() et NetStream.play() est placé dans une fonction de gestionnaire. Le gestionnaire n’est appelé que si la tentative de connexion à l’objet NetConnection a réussi ; c’est-à-dire lorsque l’événement netStatus renvoie un objet info avec une propriété code qui indique la réussite de l’opération. Il est recommandé d’attendre l’établissement d’une connexion avant d’appeler la méthode NetStream.play().

package { import flash.display.Sprite; import flash.events.NetStatusEvent; import flash.events.SecurityErrorEvent; import flash.media.Video; import flash.net.NetConnection; import flash.net.NetStream; import flash.events.Event; public class NetConnectionExample extends Sprite { private var videoURL:String = "http://www.helpexamples.com/flash/video/cuepoints.flv"; private var connection:NetConnection; private var stream:NetStream; private var video:Video = new Video(); public function NetConnectionExample() { connection = new NetConnection(); connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); connection.connect(null); } private function netStatusHandler(event:NetStatusEvent):void { switch (event.info.code) { case "NetConnection.Connect.Success": connectStream(); break; case "NetStream.Play.StreamNotFound": trace("Stream not found: " + videoURL); break; } } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function connectStream():void { var stream:NetStream = new NetStream(connection); stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); stream.client = new CustomClient(); video.attachNetStream(stream); stream.play(videoURL); addChild(video); } } } class CustomClient { public function onMetaData(info:Object):void { trace("metadata: duration=" + info.duration + " width=" + info.width + " height=" + info.height + " framerate=" + info.framerate); } public function onCuePoint(info:Object):void { trace("cuepoint: time=" + info.time + " name=" + info.name + " type=" + info.type); } }
clientNetStreamconnect()flash.net.RespondernetStatus Distribué lorsqu’un objet NetConnection publie son état ou signale une erreur. flash.events.NetStatusEvent.NET_STATUSflash.events.NetStatusEvent Distribué lorsqu’un objet NetConnection publie son état ou signale une erreur. L’événement netStatus renferme une propriété info composée d’un objet d’informations contenant des informations spécifiques sur l’événement, telles que la réussite ou l’échec d’une tentative de connexion. flash.events.NetStatusEvent.infosecurityError Distribué si un appel de NetConnection.call() tente d’établir une connexion à un serveur situé hors du sandbox de sécurité de l’appelant.flash.events.SecurityErrorEvent.SECURITY_ERRORflash.events.SecurityErrorEvent Distribué si un appel de NetConnection.call() tente d’établir une connexion à un serveur situé hors du sandbox de sécurité de l’appelant. NetConnection.call()ioError Distribué lorsqu’il se produit une erreur d’entrée ou de sortie entraînant l’échec d’une opération réseau.flash.events.IOErrorEvent.IO_ERRORflash.events.IOErrorEvent Distribué lorsqu’il se produit une erreur d’entrée ou de sortie entraînant l’échec d’une opération réseau. asyncError Distribué lorsqu’une erreur est renvoyée de manière asynchrone ; autrement dit, lorsqu’elle provient du code asynchrone natif.flash.events.AsyncErrorEvent.ASYNC_ERRORflash.events.AsyncErrorEvent Distribué lorsqu’une erreur est renvoyée de manière asynchrone ; autrement dit, lorsqu’elle provient du code asynchrone natif. NetConnection Crée un objet NetConnection. Crée un objet NetConnection. Appelez la méthode connect() pour établir une connexion.

Si une application doit communiquer avec des serveurs antérieurs à Flash Player 9, définissez la propriété objectEncoding de l’objet NetConnection.

Le code suivant crée un objet NetConnection.

     var nc:NetConnection = new NetConnection();
     
flash.net.NetConnection.connect()objectEncoding
addHeader Ajoute un en-tête de contexte à la structure du paquet AMF (Action Message Format).operationStringIdentifie l’en-tête et les données de l’objet ActionScript connexes. mustUnderstandBooleanfalseLa valeur true indique que le serveur doit interpréter et traiter cet en-tête avant de gérer tout en-tête ou message suivant. paramObjectnullTout objet ActionScript. Ajoute un en-tête de contexte à la structure du paquet AMF (Action Message Format). Par la suite, cet en-tête est envoyé avec chaque paquet AMF. Si vous appelez NetConnection.addHeader() en utilisant le même nom, le nouvel en-tête remplace l’en-tête existant et subsiste pendant toute la durée de l’objet NetConnection. Vous pouvez supprimer un en-tête en appelant NetConnection.addHeader() avec le nom de l’en-tête pour supprimer un objet non défini. call Appelle une commande ou une méthode sur Flash Media Server ou sur un serveur d’application exécutant Flash Remoting.commandStringMéthode spécifiée au format [objectPath/]method. Par exemple, la commande someObject/doSomething demande au serveur distant d’appeler la méthode clientObject.someObject.doSomething() avec tous les paramètres ... arguments facultatifs. Si le chemin de l’objet n’est pas fourni, la méthode clientObject.doSomething() est invoquée au niveau du serveur distant.

Avec Flash Media Server, command est le nom d’une fonction définie dans le script côté serveur d’une application. Si le script coté serveur est placé au niveau de la racine du répertoire de l’application, vous n’avez pas besoin d’utiliser un chemin d’objet avant command.

responderflash.net:ResponderObjet facultatif utilisé pour gérer les valeurs renvoyées par le serveur. Il est possible de définir deux méthodes pour l’objet Responder afin de gérer le résultat renvoyé : result et status. Si une erreur est renvoyée, la méthode status est appelée ; result est appelée dans tous les autres cas. Si l’objet Responder est en mesure de traiter les erreurs liées à des opérations spécifiques, l’objet NetConnection répond aux erreurs liées à l’état de connexion. argumentsLes arguments facultatifs peuvent être de n’importe quel type ActionScript, y compris une référence à un autre objet ActionScript. Lorsque la méthode spécifiée dans le paramètre command est exécutée sur le serveur d’application distant, ces arguments lui sont transmis.
Appelle une commande ou une méthode sur Flash Media Server ou sur un serveur d’application exécutant Flash Remoting. Avant d’appeler NetConnection.call(), vous devez appeler NetConnection.connect() pour vous connecter au serveur. Vous devez créer une fonction côté serveur à transmettre à cette méthode.

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.

flash.net.RespondersecurityErrorflash.events:SecurityErrorEventUn appel a tenté de communiquer avec un serveur situé en dehors du sandbox de sécurité de l’appelant. Vous pouvez contourner ce problème en utilisant un fichier de régulation sur le serveur. Un appel a tenté d’établir une communication avec un serveur situé hors du sandbox de sécurité de l’appelant.
close Ferme la connexion ouverte localement ou au serveur et distribue un événement netStatus en réglant la propriété code sur NetConnection.Connect.Closed. Ferme la connexion ouverte localement ou au serveur et distribue un événement netStatus en réglant la propriété code sur NetConnection.Connect.Closed.

Cette méthode déconnecte tous les objets NetStream qui s’exécutent sur la connexion. Toutes les données en attente qui n’ont pas encore été envoyées sont abandonnées (pour clore les flux locaux ou de serveur sans fermer la connexion, utilisez NetStream.close()). Si vous fermez la connexion et que vous souhaitez ensuite en créer une nouvelle, vous devez créer un nouvel objet NetConnection et rappeler la méthode connect().

La méthode close déconnecte également tous les objets partagés distants qui s’exécutent sur la connexion. Vous n’avez toutefois pas besoin de recréer l’objet partagé pour vous reconnecter. Pour rétablir la connexion à l’objet partagé, il vous suffit en effet d’appeler la méthode SharedObject.connect(). Par ailleurs, les données de l’objet partagé qui étaient en file d’attente lorsque vous avez émis NetConnection.close() sont envoyées après la reconnexion à l’objet.

Avec Flash Media Server, la meilleure pratique de développement consiste à appeler close() lorsque le client n’a plus besoin de la connexion au serveur. L’appel à close() est le moyen le plus rapide pour nettoyer les connexions non utilisées. Vous pouvez configurer le serveur pour qu’il ferme automatiquement les connexions inactives comme mesure de sauvegarde. Pour plus d’informations, voir le Guide d’administration et de configuration de Flash Media Server.

NetStreamflash.events.NetStatusEvent.info
connect Crée une connexion bidirectionnelle à une application sur Flash Media Server ou sur Flash Remoting, ou crée un point de terminaison de réseau bidirectionnel pour la communication de groupe homologue à homologue RTMFP.L’URI transmis au paramètre command est incorrectement formaté. ArgumentErrorArgumentErrorLa connexion a échoué. Ce peut être le cas si vous appelez connect() à partir d’un gestionnaire d’événement netStatus, ce qui n’est pas autorisé. IOErrorflash.errors:IOErrorLes fichiers locaux avec système de fichiers ne peuvent pas communiquer avec Internet. Pour éviter ce problème, reclassifiez le fichier SWF en tant que fichier local avec accès au réseau ou en tant que fichier approuvé. SecurityErrorSecurityErrorVous 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. SecurityErrorSecurityErrorcommandStringUtilisez l’une des valeurs suivantes pour le paramètre command :
  • Pour lire des fichiers vidéo et mp3 à partir d’un système de fichiers local ou d’un serveur Web, transmettez null.
  • Pour vous connecter à un serveur d’application exécutant Flash Remoting, transmettez une URL qui utilise le protocole http.
  • (Flash Player 10.1 ou AIR 2 ou version ultérieure) Pour créer un point de terminaison sans serveur pour la communication en multidiffusion IP RTMFP, transmettez la chaîne "rtmfp:". Utilisez ce type de connexion pour recevoir un flux de données en multidiffusion IP à partir d’un éditeur sans utiliser de serveur. Ce type de connexion permet également d’utiliser la multidiffusion IP pour trouver des homologues sur le même réseau local (LAN).
  • Ce type de connexion présente les limites suivantes :

    Seuls les homologues sur le même réseau local peuvent se rechercher entre eux.

    La multidiffusion IP permet à Flash Player de recevoir des flux de données, mais pas de les envoyer.

    Flash Player et AIR peuvent envoyer et recevoir des flux de données dans un groupe homologue à homologue, mais les homologues doivent être recherchés sur le même réseau local via la multidiffusion IP.

    Cette technique ne peut pas être utilisée pour une communication un-à-un.

  • Pour vous connecter à Flash Media Server, transmettez l’URI de l’application sur le serveur. Utilisez la syntaxe suivante (les éléments entre crochets sont facultatifs) :

    protocole:[//hôte][:port]/nomapp[/nomOcc]

    Utilisez l’un des protocoles suivants : rtmp, rtmpe, rtmps, rtmpt, rtmpte ou rtmfp. Si la connexion est réussie, un événement netStatus présentant une propriété code NetConnection.Connect.Success est renvoyé. Définissez la propriété NetStatusEvent.info pour la liste de tous les codes d’événement renvoyés en réponse à l’appel connect().

    Si le fichier est desservi par l’hôte dans lequel le serveur est installé, vous pouvez omettre le paramètre host. Si vous omettez le paramètre /instanceName, Flash Player ou Adobe AIR se connecte à l’occurrence par défaut de l’application.

    (Flash Player 10.1 ou AIR 2 ou version ultérieure) Pour créer des applications homologue à homologue, utilisez le protocole rtmfp.

argumentsParamètres facultatifs de tout type transmis à l’application spécifiée dans command. Avec Flash Media Server, les arguments supplémentaires sont transmis au gestionnaire d’événements application.onConnect() dans le code côté serveur de l’application. Vous devez définir et gérer les arguments dans onConnect().
Crée une connexion bidirectionnelle à une application sur Flash Media Server ou sur Flash Remoting, ou crée un point de terminaison de réseau bidirectionnel pour la communication de groupe homologue à homologue RTMFP. Pour signaler son état ou une condition d’erreur, un appel de la méthode NetConnection.connect() distribue un événement netStatus.

Appelez NetConnection.connect() pour effectuer les opérations suivantes :

  • Transmettez "null" pour lire les fichiers vidéo et mp3 à partir d’un système de fichiers local ou d’un serveur Web.
  • Transmettez une URL "http" pour vous connecter à un serveur d’application exécutant Flash Remoting. Utilisez la classe NetServices pour appeler des fonctions et renvoyer les résultats des serveurs d’application via un objet NetConnection. Pour plus d’informations, voir la documentation de Flash Remoting.
  • Transmettez une URL "rtmp/e/s" pour vous connecter à une application de Flash Media Server.
  • Transmettez une URL "rtmfp" pour créer un point de terminaison de réseau bidirectionnel en vue d’établir une communication RTMFP client-serveur, homologue à homologue et en multidiffusion IP.
  • Transmettez la chaîne "rtmfp:" pour créer un point de terminaison bidirectionnel sans réseau pour la communication en multidiffusion IP RTMFP.

Tenez compte du modèle de sécurité suivant :

  • Par défaut, Flash Player ou AIR refuse l’accès entre les sandbox. Un site Web peut autoriser l’accès à une ressource à l’aide d’un fichier de régulation d’URL.
  • Votre application peut refuser l’accès à une ressource du serveur. Dans une application Flash Media Server, utilisez le code ActionScript côté serveur pour refuser l’accès. Voir la documentation de Flash Media Server.
  • Vous ne pouvez pas appeler NetConnection.connect() si le fichier appelant se trouve dans le sandbox local avec système de fichiers.
  • 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.
  • Pour éviter qu’un fichier SWF n’appelle cette méthode, définissez le paramètre allowNetworking des balises object et embed dans la page HTML qui héberge le contenu SWF.

Néanmoins, dans Adobe AIR, le contenu du sandbox de sécurité application (contenu installé avec l’application AIR) n’est pas soumis à ces restrictions de sécurité.

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

flash.net.NetStreamflash.events.NetStatusEvent.info
client Indique l’objet sur lequel des méthodes de rappel sont appelées.ObjectLa propriété client ne peut pas être réglée sur l’objet null. TypeErrorTypeError Indique l’objet sur lequel des méthodes de rappel sont appelées. La valeur par défaut correspond à cette occurrence de NetConnection. Si vous réglez la propriété client sur un autre objet, les méthodes de rappels seront appelées sur celui-ci. connectedProxyType Type proxy utilisé pour établir une connexion à Flash Media Server.StringUne tentative d’accès à cette propriété a été effectuée alors que l’occurrence de NetConnection n’était pas connectée. ArgumentErrorArgumentError Type proxy utilisé pour établir une connexion à Flash Media Server. Les valeurs possibles sont les suivantes : "none", "HTTP", "HTTPS" et "CONNECT".

La valeur est "none" si la connexion n’est pas établie par tunnel ou s’il s’agit d’une connexion SSL native.

La valeur est "HTTP" si la connexion est établie par tunnel via HTTP.

La valeur est "HTTPS" si la connexion est établie par tunnel via HTTPS.

La valeur est "CONNECT" si la connexion est établie par tunnel à l’aide de la méthode CONNECT via un serveur proxy.

connected Indique si l’application est connectée (true) ou non (false) à un serveur par le biais d’une connexion RTMP continue.Boolean Indique si l’application est connectée (true) ou non (false) à un serveur par le biais d’une connexion RTMP continue. Lorsqu’il est connecté via HTTP, cette propriété est false, sauf dans le cas d’une connexion aux services Flash Remoting sur un serveur d’application, auquel cas la propriété est true. defaultObjectEncoding L’encodage d’objet par défaut des objets NetConnection.uint L’encodage d’objet par défaut des objets NetConnection. Lorsqu’un objet est écrit ou lu à partir de données binaires, la propriété objectEncoding indique la version AMF (Action Message Format) utilisée pour sérialiser les données : le format ActionScript 3.0 ( ObjectEncoding.AMF3 ) ou le format ActionScript 1.0 et ActionScript 2.0 ( ObjectEncoding.AMF0).

La valeur par défaut est ObjectEncoding.AMF3. La modification de NetConnection.defaultObjectEncoding n’a aucune incidence sur les occurrences existantes de NetConnection. Elle affecte uniquement les occurrences créées ultérieurement.

Pour définir l’encodage d’un objet séparément (plutôt que de définir l’encodage de tous les objets de l’application), réglez la propriété objectEncoding de l’objet NetConnection.

Pour plus d’informations, voir la description de la propriété objectEncoding.

NetConnection.objectEncodingflash.net.ObjectEncoding
farID Identifiant de l’occurrence de Flash Media Server à laquelle cette occurrence de Flash Player ou Adobe AIR est connectée.String Identifiant de l’occurrence de Flash Media Server à laquelle cette occurrence de Flash Player ou Adobe AIR est connectée. Cette propriété est significative uniquement pour les connexions RTMFP. La valeur de cette propriété est disponible uniquement après l’établissement d’une connexion RTMFP. nearIDfarNonce Valeur choisie par Flash Media Server, unique pour cette connexion.String Valeur choisie par Flash Media Server, unique pour cette connexion. Cette valeur apparaît pour le serveur comme sa valeur client.nearNonce. Cette valeur est définie uniquement pour les connexions RTMFP, RTMPE et RTMPTE. httpIdleTimeout Délai d’attente, en millisecondes, d’une réponse HTTP.NumberDélai d’attente, en millisecondes, d’une réponse HTTP. Délai d’attente, en millisecondes, d’une réponse HTTP. La valeur par défaut est zéro.
  • La valeur httpIdleTimeout est Number.
  • Lorsque vous utilisez une connexion HTTP, une valeur positive indique le nombre de millisecondes pendant lequel une connexion inactive doit rester ouverte.
  • Une valeur de zéro indique qu’il est nécessaire d’utiliser la valeur d’inactivité de mise en réseau par défaut correspondant à la plate-forme.
  • Une valeur négative déclenche une erreur RangeError.
  • Si la valeur httpIdleTimeout est dépassée, un événement netStatus est distribué.
  • Cette propriété affecte uniquement les objets NetConnection créés avec des connexions HTTP. Les objets NetConnection créés avec RTMP, RTMFP ou d’autres canaux HTTP ne sont pas affectés par cette propriété.
//Set the timeout to 5 seconds connection = new NetConnection(); connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); connection.httpIdleTimeout = 5000; Dans les systèmes basés sur Linux, le délai d’expiration de l’objet NetConnection peut être supérieur au délai défini à l’aide de la valeur httpIdleTimeout.
maxPeerConnections Nombre total de connexions d’homologue entrantes et sortantes que cette occurrence de Flash Player ou Adobe AIR autorise.uint Nombre total de connexions d’homologue entrantes et sortantes que cette occurrence de Flash Player ou Adobe AIR autorise. La valeur par défaut est 8.

Cette valeur ne fait pas la distinction entre les connexions d’éditeurs et d’abonnés. Si cette valeur est réduite alors que des connexions d’homologue sont en cours, la nouvelle valeur n’affecte que les nouvelles connexions entrantes. Les connexions existantes ne sont pas abandonnées.

nearID Identifiant de cette occurrence de Flash Player ou Adobe AIR pour cette occurrence de NetConnection.String Identifiant de cette occurrence de Flash Player ou Adobe AIR pour cette occurrence de NetConnection. Cette propriété est significative uniquement pour les connexions RTMFP.

Chaque occurrence de NetConnection possède une propriété nearID unique. Aucune occurrence de Flash Player, Adobe AIR ou NetConnection n’a le même identifiant.

Les autres occurrences Flash Player ou Adobe AIR utilisent cet identifiant comme peerID pour les nouvelles connexions NetStream à ce client. Par la suite, cet identifiant est le farID dans toutes les occurrences NetStream d’homologue qui se connectent à cette occurrence.

farID
nearNonce Valeur choisie par cette occurrence de Flash Player ou Adobe AIR, unique pour cette connexion.String Valeur choisie par cette occurrence de Flash Player ou Adobe AIR, unique pour cette connexion. Cette valeur apparaît pour le serveur comme sa valeur client.farNonce. Cette valeur est définie uniquement pour les connexions RTMFP, RTMPE et RTMPTE. objectEncoding Encodage de l’objet de cette occurrence de NetConnection.uintUne tentative de définition de la valeur de la propriété objectEncoding a été effectuée pendant que l’occurrence de NetConnection était connectée. ReferenceErrorReferenceErrorCette propriété a été réglée sur une valeur autre que ObjectEncoding.AMF0 ou ObjectEncoding.AMF3. ArgumentErrorArgumentError Encodage de l’objet de cette occurrence de NetConnection.

Lors de l’écriture ou de la lecture d’un objet à partir de données binaires, la propriété objectEncoding indique la version AMF (Action Message Format) utilisée pour sérialiser les données : le format ActionScript 3.0 (ObjectEncoding.AMF3) ou le format ActionScript 1.0 et ActionScript 2.0 (ObjectEncoding.AMF0). Définissez la propriété objectEncoding pour choisir une version AMF pour une occurrence de NetConnection.

Il est important de comprendre cette propriété si votre application doit communiquer avec des serveurs antérieurs à Flash Player 9. Les trois scénarios suivants sont possibles :

  • Connexion à un serveur prenant en charge AMF3 (par exemple, Flex Data Services 2 ou Flash Media Server 3). La valeur par défaut de defaultObjectEncoding est ObjectEncoding.AMF3. Toutes les occurrences NetConnection créées dans ce fichier utilisent la sérialisation AMF3, afin que vous n’ayez pas à définir la propriété objectEncoding.
  • Connexion à un serveur ne prenant pas en charge AMF3 (par exemple, Flash Media Server 2). Dans ce cas, réglez la propriété statique NetConnection.defaultObjectEncoding sur ObjectEncoding.AMF0. Toutes les occurrences de NetConnection créées dans ce fichier SWF utilisent la sérialisation AMF0. Il est inutile de définir la propriété objectEncoding.
  • Vous vous connectez à plusieurs serveurs utilisant des versions d’encodage différentes. Au lieu d’utiliser defaultObjectEncoding, réglez l’encodage d’objet connexion par connexion en utilisant pour chacune d’elles la propriété objectEncoding. Réglez la propriété sur ObjectEncoding.AMF0 pour vous connecter aux serveurs qui utilisent l’encodage AMF0, tels que et Flash Media Server 2, et sur ObjectEncoding.AMF3 pour vous connecter aux serveurs qui utilisent l’encodage AMF3, tels que Flex Data Services 2.

Une fois l’occurrence de NetConnection connectée, sa propriété objectEncoding est en lecture seule.

Si vous ne spécifiez pas l’encodage approprié pour vous connecter à un serveur, l’objet NetConnection distribue l’événement netStatus. La propriété NetStatusEvent.info contient un objet d’informations dont la propriété code est réglée sur NetConnection.Connect.Failed, ainsi qu’une description expliquant que le codage d’objet est incorrect.

defaultObjectEncodingflash.net.ObjectEncoding
protocol Protocole utilisé pour établir la connexionStringUne tentative d’accès à cette propriété a été effectuée alors que l’occurrence de NetConnection n’était pas connectée. ArgumentErrorArgumentError Protocole utilisé pour établir la connexion Cette propriété est pertinente lorsque Flash Media Server est utilisé. Les valeurs possibles sont les suivantes :
  • "rtmp" : RTMP (Real-Time Messaging Protocol)
  • "rtmpe" : RTMP chiffré
  • "rtmpt" : RTMP par tunnelage HTTP
  • "rtmpte" : RTMP chiffré par tunnelage HTTP
  • "rtmps" : RTMP de type HTTPS
  • "rtmfp" : RTMFP (Real-Time Media Flow Protocol)
proxyType Détermine les méthodes de secours à utiliser lorsque la connexion initiale à Flash Media Server échoue.String Détermine les méthodes de secours à utiliser lorsque la connexion initiale à Flash Media Server échoue. Définissez la propriété proxyType avant d’appeler la méthode NetConnection.connect().

Les valeurs possibles sont les suivantes : "none", "HTTP", "CONNECT" et "best". La valeur par défaut est "none".

Pour utiliser une connexion SSL native, définissez cette propriété sur "best". Si le lecteur ne parvient pas à établir une connexion directe au serveur (via le port par défaut 443 ou un autre port que vous spécifiez) et si un serveur proxy est en place, le lecteur tente d’utiliser la méthode CONNECT. Si cette tentative échoue, le lecteur établit un tunnel via HTTPS.

Si la propriété est définie sur "HTTP" et qu’une connexion directe échoue, le tunnelage HTTP est utilisé. Si la propriété est définie sur "CONNECT" et qu’une connexion directe échoue, la méthode de tunnelage CONNECT est utilisée. En cas d’échec, la connexion n’utilise pas le tunnelage HTTP.

Cette propriété est applicable uniquement lors de l’utilisation de RTMP, RTMPS ou RTMPT. La méthode CONNECT est réservée aux utilisateurs qui sont connectés au réseau par un serveur proxy.

unconnectedPeerStreams Objet qui contient tous les objets NetStream d’homologues abonnés non associés aux objets NetStream de publication.Array Objet qui contient tous les objets NetStream d’homologues abonnés non associés aux objets NetStream de publication. Les objets NetStream abonnés associés à des objets NetStream de publication se trouvent dans le tableau NetStream.peerStreams. NetStream.peerStreamsuri URI transmise à la méthode NetConnection.connect().String URI transmise à la méthode NetConnection.connect(). Si NetConnection.connect() n’a pas été appelée ou si aucune URI n’a été transmise, cette propriété est undefined. usingTLS Indique si une connexion sécurisée a été établie via le protocole TLS (Transport Layer Security) natif plutôt que HTTPS.BooleanUne tentative d’accès à cette propriété a été effectuée alors que l’occurrence de NetConnection n’était pas connectée. ArgumentErrorArgumentError Indique si une connexion sécurisée a été établie via le protocole TLS (Transport Layer Security) natif plutôt que HTTPS. Cette propriété n’est valide que si un objet NetConnection est connecté.