Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
TOUT CE QUE VOUS AVEZ TOUJOURS VOULU SAVOIR SUR LES SHAREDOBJECT
Description
Reprise et développement de la classe SharedObject. Limitation et avantages. Comment et quand les utiliser? Syntaxe et exemples
Tutorial
Ce tutorial s'efforce de couvrir toute la classe SharedObject: définition, utilisation et limitation. Il s'adresse à tous ceux qui veulent découvrir cette classe ou à ceux qui veulent maîtriser son utilisation et ses applications.
SharedObject: c'est une classe, comme la classe Sound ou MovieClip. Son utilisation première est le stockage de données, de tous types, en local, soit sur la machine de l'utilisateur ou sur le serveur. Elle est disponible depuis Flash 6, plus connu sous le nom redoutable de Flash MX.
L'avantage premier d'un SharedObject est sa versatilité, sa souplesse d'utilisation. On peut l'utiliser pour stocker tout type de variables, on ou off line et sans faire appel à une technologie résidante sur le poste client, tel que PHP ou ASP combiné avec une base SQL ou ACCESS. SharedObject génère un fichier en local, finalement comparable à un fichier texte, mais encodé. (Il semblerait, après quelques recherches, que ce soit proche du C. Si quelqu'un peut apporter son opinion fondée là-dessus, il est la bienvenue.)
A chaque création d'un SharedObject,Flash va donc générer et sauver un fichier sur le poste du client,fichier dont l'extension est .sol. Nous sommes donc confrontés à deuxparamètres ici: l'autorisation d'écrire sur le poste client, etl'espace alloué pour effectuer cette écriture. Et nous abordons là leslimitations du SharedObject: l'espace dont on peut disposer. Par défaut, Flash aloue 100 Ko sur le poste client pour le stockage de SharedObject. Nous verrons plus loin comment modifier ce paramètre.
Passons maintenant la classe SharedObject en détail
1) syntaxe so = SharedObject.getLocal("LeNomDuSO", "/")
- getLocal est la méthode invoquée afin de stocker sur le disque du poste client ou sur un serveur le fichier LeNomDuSO.sol.
- / représente le chemin de l'enregistrement du SharedObject. Ce paramètre est optionel.
2) nommage (c'est pas très beau ce mot, si vous avez mieux) on peut attribuer toute sorte de nom à son SharedObject: statique ou dynamique.
ex: so = SharedObject.getLocal("UnNom", "/") ou encore: var NomDynamique:String = "StringLambda" so = SharedObject.getLocal(NomDynamique, "/") //en fait, le fichier ainsi créé sera: StringLambda.sol
3) usage l'espace alloué par défaut est de 100Ko, mais il est possible de changer cette valeur. Si vous avez besoin de plus d'espace, utiliser la classe System et la méthode showSettings: System.showSettings(1) //l'argument 1 ici ouvrira la fenètre de paramétrage directement sur l'onglet d'allocation d'espace.
4) objet de la classe SharedObject c'est l'objet data. Il peut être de n'importe quel type: Array, Number, String... ex: so = SharedObject.getLocal("MonSo" , "/") so.data.Param1 = "100" // l'objet data.Param1 est une chaîne et sa valeur est: "100"
so.data.Param2 = 25 // l'objet data.Param2 est un nombre et sa valeurest: 25
so.data.Param3 = [] // l'objet data.Param1 est un tableau non définit
so.data.Param4 = UserName.text // ici, l'objetdata.Param4 prendra la valeur qui sera saisie dans le champ de texteUserName.
5) handler il n'y en a qu'un: onStatus. Qui comme on peut le supposer nous retourne le status du SharedObject.
Il n'y a que 3 status:
- en attente ou pending en anglais,
- sauvegarde réussie ou true, et enfin
- sauvegarge impossible, onStatus retournera alors false.
important onStatus ne peut être invoqué qu'avec une fonction qui elle, retournera l'état du SharedObject.
ex: msg.html = true // ce champ de texte va nousafficher le status du SharedObject // le format html offre plus de fonctions que le format text msg.multiline = true so = SharedObject.getLocal("MonSo" , "/") so.onStatus = function(EtatDuSo:Object){ //création de la fonction qui va nous retourner l'état du SharedObject for (var i in EtatDuSo){ msg.htmlText += i + "\t" + EtatDuSo[i] //affichage de l'état du SharedObject } msg.htmlText += }
Puisque nous n'avons toujours pas cherché à sauvegarder unSharedObject, pour l'instant cette instruction n'a pas été initiée. Pour cefaire nous allons utiliser la méthode flush().
6) méthodes La première et celle sans qui rien n'arrive est la méthode flush(), quiindique à l'application qu'il faut sauvegarder vos différents data.Par défaut, le SharedObject sera flushé lors de la fermeture de votreapplication. Ce n'est donc pas une instruction obligatoire mais leflush peut aussi être déclanché par un onPress.
ex: so = SharedObject.getLocal("MonSo" , "/") so.data.param1 = 25
this.FlushBouton.onPress = function(){ // bien evidemment, cela aurait aussi fonctionné avec un onRelease... so.flush() }
le fichier MonSO.sol a été créé, et la valeur 25 a été passée à l'objetdata.param1. Lorsque vous appelerez votre SharedObject, c'est cettevaleur que vous récupererez pour l'objet data.param1. Ainsi:
so = SharedObject.getLocal("MonSo" , "/") LaTailleDuNainDeJardin = so.data.param1 // ici, donc 25
bien sûr, les combinaisons sont multiples: so = SharedObject.getLocal("MonSo" , "/") LaTailleDuNainDeJardin.text = so.data.param1 + " cm" // affichera dans le champ LaTailleDuNainDeJardin: 25 cm
on peut aussi spécifier la taille en octet à "flusher", ou en fait, lataille que l'on désire attribuer au SO lors de sa création, et plustard de sa mise à jour: Soit:
so = SharedObject.getLocal("MonSo" , "/") so.data.param1 = 25 so.flush(1000000) // alloue 1 Mo pour le stockage du SO. ici, sil'utilisateur n'a pas changé ses paramètres // par défaut, la fenêtre deparamétrage du player apparait et demande si l'utilisateur // veut alloué plus d'espace à lasauvegarde de données.
La deuxième méthode est clear() qui on s'en doute, va purger leSharedObject. Attention,elle va juste le purger, à savoir rendre nulltous les data du SharedObject, mais le fichier existe toujours et doncle SharedObject aussi, ainsi que son référencement.
ex: so = SharedObject.getLocal("MonSo" , "/") so.clear() // la référence vers MonSO est toujours active et lefichier MonSO.sol existe toujours
Enfin, voici la moins utilisée des méthodes: getSize(). Elle retournela taille en bytes la taille du fichier SO. Or, pour ce faire, elle vaparcourir chaque objet, donc chaque data. plus vous avez sauve de data,plus le processus sera long et consommera des ressources systèmes.Macromedia recommande son utilisation qu'en cas de besoin trèsspécifique, à vous de voir.
ex: so = SharedObject.getLocal("MonSo" , "/") var ByteSO:Number = so.getSized() trace("la taille de votre objet est de: " + ByteSO)
***********************************************************************
Voilà pour la théorie, les utilisations peuvent être de toutes sortes:sauvegarde d'un score, paramétrage d'une application, ou encorestockage de données et archivage d'états d'un objet, couleur, taille ouposition. a nouveau, le principal intérèt de la classe SharedObjectréside dans son utilisation offline, permettant de sauver et derécupérer des données hors plateforme technologique.
Entraînez-vous à utiliser SharedObject pour réaliser un compteur depassage sur un site ou encore un journal de bord à entrées multiples.si les avis sont favorables, ces deux exemples seront mis en ligne d'ici8 jours, ce qui vous laisse le temps de plancher dessus.
Merci. Et bon SharedObject!
Commentaires
|
CalendriCode
| | | L | M | M | J | V | S | D |
| | | | 1 | 2 | 3 | 4 |
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 | |
|
|