Documentation Flash CS3 |
|||
| Programmation avec ActionScript 3.0 > Réseau et communication > Stockage des données locales | |||
Un objet partagé, parfois appelé « cookie Flash » est un fichier de données qui peut être créé sur votre ordinateur par les sites que vous visitez. Les objets partagés servent le plus souvent à améliorer votre navigation sur le Web, par exemple en vous permettant de personnaliser l'aspect d'un site Web que vous consultez fréquemment. Pris isolément, les objets partagés ne peuvent interagir avec les données de votre ordinateur. Point important : les objets partagés ne peuvent en aucun cas accéder à votre adresse électronique (ou autre information personnelle) ni la conserver sans votre consentement expresse.
Il est possible de créer des instances d'objets partagés à l'aide des méthodes statiques SharedObject.getLocal() ou SharedObject.getRemote(). La méthode getLocal() essaie de charger un objet partagé persistant localement, disponible uniquement sur le client actuel. A l'inverse, la méthode getRemote() tente de charger un objet partagé distant, susceptible d'être partagé par plusieurs clients au moyen d'un serveur tel que Flash Media Server. S'il n'existe aucun objet partagé local ou distant, les méthodes getLocal() et getRemote() créent une nouvelle instance SharedObject.
Le code suivant essaie de charger un objet partagé local nommé test. Si cet objet n'existe pas, un objet partagé est créé avec le même nom.
var so:SharedObject = SharedObject.getLocal("test");
trace("SharedObject is " + so.size + " bytes");
Si aucun objet partagé nommé test n'est trouvé, un objet est créé, d'une taille de 0 octet. Si l'objet partagé existait précédemment, sa taille actuelle (en octets) est rétablie.
Vous pouvez stocker des données dans un objet partagé en attribuant des valeurs à l'objet de données, comme le montre l'exemple suivant :
var so:SharedObject = SharedObject.getLocal("test");
so.data.now = new Date().time;
trace(so.data.now);
trace("SharedObject is " + so.size + " bytes");
S'il existe déjà un objet partagé nommé test avec le paramètre now, la valeur existante est remplacée. La propriété SharedObject.size vous permet de déterminer si un objet partagé existe déjà, comme illustré ci-après :
var so:SharedObject = SharedObject.getLocal("test");
if (so.size == 0)
{
// L'objet partagé n'existe pas.
trace("created...");
so.data.now = new Date().time;
}
trace(so.data.now);
trace("SharedObject is " + so.size + " bytes");
Le code précédent utilise le paramètre size afin de déterminer si l'instance d'objet partagé du nom spécifié existe déjà. Si vous testez le code suivant, vous remarquerez qu'à chaque exécution, l'objet partagé est recréé. Pour enregistrer un objet partagé sur le disque dur de l'utilisateur, vous devez explicitement appeler la méthode SharedObject.flush(), comme dans l'exemple ci-après :
var so:SharedObject = SharedObject.getLocal("test");
if (so.size == 0)
{
// L'objet partagé n'existe pas.
trace("created...");
so.data.now = new Date().time;
}
trace(so.data.now);
trace("SharedObject is " + so.size + " bytes");
so.flush();
Si vous utilisez la méthode flush() pour écrire des objets partagés sur le disque dur de l'ordinateur, vous devez vérifier avec soin si l'utilisateur a explicitement désactivé le stockage local à l'aide du Gestionnaire de paramètres de Flash Player (www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager07.html), comme illustré dans cet exemple :
var so:SharedObject = SharedObject.getLocal("test");
trace("Current SharedObject size is " + so.size + " bytes.");
so.flush();
Il est possible de récupérer des valeurs dans un objet partagé en spécifiant le nom de la propriété dans la propriété data de l'objet partagé. Par exemple, si vous exécutez le code suivant, Flash Player affiche depuis combien de minutes l'instance SharedObject a été créée :
var so:SharedObject = SharedObject.getLocal("test");
if (so.size == 0)
{
// L'objet partagé n'existe pas.
trace("created...");
so.data.now = new Date().time;
}
var ageMS:Number = new Date().time - so.data.now;
trace("SharedObject was created " + Number(ageMS / 1000 / 60).toPrecision(2) + " minutes ago");
trace("SharedObject is " + so.size + " bytes");
so.flush();
A la première exécution du code précédent, une nouvelle instance SharedObject nommée test est créée, avec une taille initiale de 0 octet. Parce que la taille initiale est nulle, l'instruction if renvoie la valeur true et une nouvelle propriété now est ajoutée à l'objet partagé local. L'ancienneté de l'objet partagé est calculée par soustraction de la valeur de la propriété now de l'heure actuelle. A chaque exécution suivante du code ci-dessus, la taille de l'objet partagé doit être supérieure à zéro ; le code peut effectuer un suivi du nombre de minutes écoulées depuis la création de l'objet partagé.
Des valeurs sont stockées dans un objet partagé, au sein de la propriété data. Vous pouvez passer en boucle chaque valeur d'une instance d'objet partagé à l'aide de for..in, comme le montre l'exemple suivant :
var so:SharedObject = SharedObject.getLocal("test");
so.data.hello = "world";
so.data.foo = "bar";
so.data.timezone = new Date().timezoneOffset;
for (var i:String in so.data)
{
trace(i + ":\t" + so.data[i]);
}
Lorsque vous créez un SharedObject local ou distant à l'aide de getLocal() ou getRemote(), un paramètre facultatif nommé secure détermine si l'accès à l'objet partagé se limite aux fichiers SWF diffusés via une connexion HTTPS. Si ce paramètre a la valeur true et que votre fichier SWF est diffusé sur HTTPS, Flash Player crée un nouvel objet sécurisé ou obtient une référence à un objet partagé sécurisé existant. Cet objet partagé sécurisé peut uniquement être lu ou écrit par des fichiers SWF reçus via des connexions HTTPS appelant SharedObject.getLocal() avec le paramètre secure réglé sur true. Si ce paramètre a la valeur false et que votre fichier SWF est diffusé sur HTTPS, Flash Player crée un nouvel objet partagé ou obtient une référence à un objet partagé existant.
Cet objet partagé peut être lu ou écrit par des fichiers SWF reçus via des connexions autres que HTTPS. Si votre fichier SWF est diffusé via une connexion autre que HTTPS et que vous essayez de régler ce paramètre sur true, la création d'un objet partagé (ou l'accès à un objet partagé sécurisé précédemment créé) échoue, une erreur est renvoyée et l'objet partagé devient null. Si vous tentez d'exécuter l'extrait de code suivant à partir d'un connexion non HTTPS, la méthode SharedObject.getLocal() renvoie une erreur :
try
{
var so:SharedObject = SharedObject.getLocal("contactManager", null, true);
}
catch (error:Error)
{
trace("Unable to create SharedObject.");
}
Quelle que soit la valeur de ce paramètre, les objets partagés créés sont pris en compte dans la quantité d'espace disque totale autorisée pour un domaine.
Flash CS3
M'envoyer un message électronique lorsque des commentaires sont ajoutés à cette page | Rapport de commentaire
Page en cours: http://livedocs.adobe.com/flash/9.0_fr/main/00000319.html