Package | flash.net |
Classe | public class SharedObject |
Héritage | SharedObject EventDispatcher Object |
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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é surnull
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. Notez également que sous Mac OS, à partir d’AIR 3.3, l’emplacement des objets partagés localement a changé ; par conséquent, si vous effectuez une mise à niveau vers l’espace de noms 3.3, vous pouvez penser que les objets ont été perdus.
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 renvoieSharedObjectFlushStatus.FLUSHED
lorsque l’appel aboutit. Il renvoieSharedObjectFlushStatus.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énementnetStatus
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
.
Eléments de l’API associés
Propriété | Défini par | ||
---|---|---|---|
client : Object
Indique l’objet sur lequel des méthodes de rappel sont appelées. | SharedObject | ||
constructor : Object
Référence à l’objet de classe ou à la fonction constructeur d’une occurrence donnée d’un objet. | Object | ||
data : Object [lecture seule]
Ensemble des attributs affectés à la propriété data de l’objet. Ces attributs peuvent être partagés et stockés. | SharedObject | ||
defaultObjectEncoding : uint [statique]
Encodage d’objet par défaut (version AMF) de tous les objets partagés locaux créés dans le fichier SWF. | SharedObject | ||
fps : Number [écriture seule]
Indique la fréquence, en secondes, d’envoi au serveur des modifications apportées à un client. | SharedObject | ||
objectEncoding : uint
Encodage d’objet (version AMF) de cet objet partagé. | SharedObject | ||
preventBackup : Boolean [statique]
Indique si les objets partagés locaux seront sauvegardés par le service de sauvegarde dans le cloud d’iOS. | SharedObject | ||
size : uint [lecture seule]
Taille actuelle de l’objet partagé, en octets. | SharedObject |
Méthode | Défini par | ||
---|---|---|---|
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Enregistre un objet écouteur d’événement auprès d’un objet EventDispatcher afin que l’écouteur soit averti d’un événement. | EventDispatcher | ||
Dans le cas d’un objet partagé local, cette méthode purge toutes les données et supprime l’objet du disque. | SharedObject | ||
Ferme la connexion entre un objet partagé distant et le serveur. | SharedObject | ||
Se connecte à un objet partagé distant sur un serveur par l’intermédiaire d’un objet NetConnection spécifié. | SharedObject | ||
Distribue un événement dans le flux d’événements. | EventDispatcher | ||
Ecrit immédiatement un objet partagé persistant localement dans un fichier local. | SharedObject | ||
[statique]
Renvoie une référence à un objet partagé persistant localement qui est disponible uniquement pour le client actuel. | SharedObject | ||
getRemote(name:String, remotePath:String = null, persistence:Object = false, secure:Boolean = false):SharedObject [statique]
Renvoie une référence à un objet partagé sur Flash Media Server auquel plusieurs clients peuvent accéder. | SharedObject | ||
Vérifie si des écouteurs sont enregistrés auprès de l’objet EventDispatcher pour un type spécifique d’événement. | EventDispatcher | ||
Indique si la propriété spécifiée d’un objet est définie. | Object | ||
Indique si une occurrence de la classe Object figure dans la chaîne de prototype de l’objet spécifié en tant que paramètre. | Object | ||
Indique si la propriété spécifiée existe et est énumérable. | Object | ||
Supprime un écouteur de l’objet EventDispatcher. | EventDispatcher | ||
Diffuse un message à tous les clients connectés à l’objet partagé distant, y compris au client qui a envoyé le message. | SharedObject | ||
Indique au serveur que la valeur d’une propriété a changé dans l’objet partagé. | SharedObject | ||
Met à jour la valeur d’une propriété dans un objet partagé et indique cette modification au serveur. | SharedObject | ||
Définit la disponibilité d’une propriété dynamique pour les opérations en boucle. | Object | ||
Renvoie la représentation de chaîne de cet objet, formatée selon les paramètres régionaux en vigueur. | Object | ||
Renvoie la représentation sous forme de chaîne de l’objet spécifié. | Object | ||
Renvoie la valeur primitive de l’objet spécifié. | Object | ||
Vérifie si un écouteur d’événement est enregistré auprès de cet objet EventDispatcher ou de ses ancêtres pour le type d’événement spécifié. | EventDispatcher |
Evénement | Synthèse | Défini par | ||
---|---|---|---|---|
[Evénement de diffusion] Distribué lorsque l’application Flash Player obtient le focus du système d’exploitation et devient active. | EventDispatcher | |||
Distribué lorsqu’une erreur est renvoyée de manière asynchrone ; autrement dit, lorsqu’elle provient du code asynchrone natif. | SharedObject | |||
[Evénement de diffusion] Distribué lorsque l’application Flash Player ou AIR perd le focus du système d’exploitation et devient inactive. | EventDispatcher | |||
Distribué lorsqu’une occurrence de SharedObject publie son état ou signale une erreur. | SharedObject | |||
Distribué lorsqu’un objet partagé distant a été mis à jour par le serveur. | SharedObject |
client | propriété |
client:Object
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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.
Implémentation
public function get client():Object
public function set client(value:Object):void
Valeur émise
TypeError — La propriété client ne peut pas être réglée sur l’objet null.
|
data | propriété |
data:Object
[lecture seule] Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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.
Implémentation
public function get data():Object
Eléments de l’API associés
defaultObjectEncoding | propriété |
defaultObjectEncoding:uint
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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é.
Implémentation
public static function get defaultObjectEncoding():uint
public static function set defaultObjectEncoding(value:uint):void
Eléments de l’API associés
fps | propriété |
fps:Number
[écriture seule] Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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é.
Implémentation
public function set fps(value:Number):void
objectEncoding | propriété |
objectEncoding:uint
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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églezobjectEncoding
surObjectEncoding.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ètredefaultObjectEncoding
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.
Implémentation
public function get objectEncoding():uint
public function set objectEncoding(value:uint):void
Valeur émise
ReferenceError — Vous 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.
|
Eléments de l’API associés
preventBackup | propriété |
preventBackup:Boolean
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 3.7 |
Indique si les objets partagés locaux seront sauvegardés par le service de sauvegarde dans le cloud d’iOS.
Indiquez la valeur true ou false :
- true : empêche la sauvegarde des objets partagés locaux par le service de sauvegarde dans le cloud d’iOS.
- false (par défaut) : les objets partagés locaux sont sauvegardés par le service de sauvegarde dans le cloud d’iOS.
Cette propriété ne s’applique qu’aux objets partagés locaux et ne concerne qu’iOS.
Implémentation
public static function get preventBackup():Boolean
public static function set preventBackup(value:Boolean):void
size | propriété |
size:uint
[lecture seule] Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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.
Implémentation
public function get size():uint
Plus d’exemples
Exemple ( Comment utiliser cet exemple )
"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
clear | () | méthode |
public function clear():void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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.
Exemple ( Comment utiliser cet exemple )
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 | () | méthode |
public function close():void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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 | () | méthode |
public function connect(myConnection:NetConnection, params:String = null):void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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);
Paramètres
myConnection:NetConnection — Objet NetConnection qui utilise le protocole RTMP (Real-Time Messaging Protocol), tel qu’un objet NetConnection utilisé pour communiquer avec Flash Media Server.
| |
params:String (default = null ) — Chaîne définissant le message à transmettre à l’objet partagé distance sur le serveur. Ne peut pas être utilisé avec Flash Media Server.
|
Valeur émise
Error — 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.
|
Eléments de l’API associés
flush | () | méthode |
public function flush(minDiskSpace:int = 0):String
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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
.
Paramètres
minDiskSpace:int (default = 0 ) — Quantité minimale d’espace disque, en octets, à allouer à cet objet.
|
String — L’une des valeurs suivantes :
|
Valeur émise
Error — 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. |
Plus d’exemples
Eléments de l’API associés
Exemple ( Comment utiliser cet exemple )
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 } } }
getLocal | () | méthode |
public static function getLocal(name:String, localPath:String = null, secure:Boolean = false):SharedObject
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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 :
- Accès au système de fichiers local uniquement
- Accès au réseau uniquement
- 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).
Paramètres
name:String — Nom 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 :
~ % & \ ; : " ' , < > ? # | |
localPath:String (default = null ) — Chemin 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é.
| |
secure:Boolean (default = false ) — Dé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 votre fichier SWF est reçu via une connexion autre que HTTPS et que vous tentez de définir ce paramètre sur Le diagramme suivant indique comment utiliser le paramètre |
SharedObject — Ré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.
|
Valeur émise
Error — 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.
|
Plus d’exemples
getRemote | () | méthode |
public static function getRemote(name:String, remotePath:String = null, persistence:Object = false, secure:Boolean = false):SharedObject
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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()
.
Paramètres
name:String — Nom 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 :
~ % & \ ; : " ' , > ? ? # | |
remotePath:String (default = null ) — URI du serveur sur lequel sera stocké l’objet partagé. Cette URI doit être identique à celle de l’objet NetConnection transmis à la méthode connect() .
| |
persistence:Object (default = false ) — Indique 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 :
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. | |
secure:Boolean (default = false ) — Dé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 .
|
SharedObject — Référence à un objet pouvant être partagé entre plusieurs clients.
|
Valeur émise
Error — 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.
|
Plus d’exemples
Eléments de l’API associés
send | () | méthode |
public function send(... arguments):void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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é.
Paramètres
... arguments — Un 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. |
setDirty | () | méthode |
public function setDirty(propertyName:String):void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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.
Paramètres
propertyName:String — Nom de la propriété qui a changé.
|
Eléments de l’API associés
setProperty | () | méthode |
public function setProperty(propertyName:String, value:Object = null):void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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.
Paramètres
propertyName:String — Nom de la propriété de l’objet partagé.
| |
value:Object (default = null ) — Valeur de la propriété (objet ActionScript) ou null pour supprimer la propriété.
|
Eléments de l’API associés
asyncError | Evénement |
flash.events.AsyncErrorEvent
propriété AsyncErrorEvent.type =
flash.events.AsyncErrorEvent.ASYNC_ERROR
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Distribué lorsqu’une erreur est renvoyée de manière asynchrone ; autrement dit, lorsqu’elle provient du code asynchrone natif.
La constanteAsyncErrorEvent.ASYNC_ERROR
définit la valeur de la propriété type
d’un objet événement asyncError
.
Les propriétés de cet événement sont les suivantes :
Propriété | Valeur |
---|---|
bubbles | false |
cancelable | false ; il n’existe aucun comportement par défaut à annuler. |
currentTarget | L’objet qui traite activement l’objet Event avec un écouteur d’événements. |
target | L’objet distribuant l’événement. |
error | Erreur qui a déclenché l’événement. |
netStatus | Evénement |
flash.events.NetStatusEvent
propriété NetStatusEvent.type =
flash.events.NetStatusEvent.NET_STATUS
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
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.
type
d’un objet d’événement netStatus
.
Les propriétés de cet événement sont les suivantes :
Propriété | Valeur |
---|---|
bubbles | false |
cancelable | false ; il n’existe aucun comportement par défaut à annuler. |
currentTarget | L’objet qui traite activement l’objet Event avec un écouteur d’événements. |
info | Objet associé à des propriétés décrivant son état ou indiquant une erreur. |
target | Objet NetConnection ou NetStream publiant son état. |
Eléments de l’API associés
sync | Evénement |
flash.events.SyncEvent
propriété SyncEvent.type =
flash.events.SyncEvent.SYNC
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Distribué lorsqu’un objet partagé distant a été mis à jour par le serveur.
Définit la valeur de la propriététype
d’un objet événement sync
.
Les propriétés de cet événement sont les suivantes :
Propriété | Valeur |
---|---|
bubbles | false |
cancelable | false ; il n’existe aucun comportement par défaut à annuler. |
currentTarget | L’objet qui traite activement l’objet Event avec un écouteur d’événements. |
changeList | Tableau associé à des propriétés décrivant son état. |
target | occurrence SharedObject qui a été mise à jour par le serveur. |
Eléments de l’API associés
"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; } } }
Tue Jun 12 2018, 09:30 AM Z