Retour à la page d'accueil

Le chargement de données externes

L'une des aspects particulièrement intéressants de Flash MX est son habileté à communiquer aisément avec toutes sortes de sources externes, afin d'envoyer de l'information et de recevoir des données de d'autres programmes. Cela rend possible le développement d'application web efficace et dynamique, pouvant offrir un contenu personnalisé à son utilisateur.

Flash peut aller chercher de l'information provenant d'une source de données externes (des informations qui ne sont pas présentes dans le film au départ de la lecture). Ces sources de données peuvent être des fichiers texte, des scripts PHP, ASP ou ColdFusion retirant eux-mêmes l'information à partir d'une base de données.

Un fichier swf publié sur le web peut charger des données enregistrées sous ces 3 types de format :

URL: pour passer des données dans une adresse URL, les variables et valeurs que l'on souhaite charger doivent être présentées sous la forme d'une chaîne de caractères. Par exemple :

nom=Jerome&site=http://www.jerome.com&occupation=enseignant

Cette chaîne définit trois variables (nom, site et occupation) et leurs valeurs respectives. Lorsque ce texte est chargé, Flash restitue les variables et leurs valeurs, les rendant accessibles sur le scénario principal. Un signe = est utilisé pour séparer le nom de la variable et la valeur, le signe & sert à délimiter les couples de données. Sous ce format, on peut inscrire un nombre infini de variables. Seules les variables simples peuvent être stockées sous ce format. Les objets, les listes et autres types de données ne peuvent pas être passés dans une adresse URL.

XML: Flash MX supporte XML, un standard de description des données. Lorsqu'un document XML est chargé dans Flash, il est nécessaire de programmer un script afin d'interpréter ces données et de définir sa présentation.

Objets partagés: Les objets partagés (Shared Objects) sont un peu comme les cookies de Flash. Ils permettent de stocker des données sur l'ordinateur du client. N'importe quel type de données, y compris les listes, les objets, les variables, peuvent être stockés dans un objet partagé et relu lors d'une prochaine visite de l'ordinateur client.

L'information qui est enregistrée sous un de ces formats peut être distribuée vers Flash à partir d'un fichier texte, de scripts serveur (ASP, CFM, CGI, JSP, PHP), de fichiers XML ou à partir d'une interface de connexion XML (XML socket), ou encore d'un objet partagé.

Chargement d'informations à partir d'un fichier texte et d'un script serveur

Flash peut charger des documents texte (*.txt) comprenant des données présentées sous la forme d'une chaîne de caractères variable=valeur&. Les fichiers texte sont chargés à l'aide de l'objet LoadVars() et de sa méthode load.

Avant d'entrer dans le détail de l'objet LoadVars(), quelques informations complémentaires. Depuis Flash MX, le codage du texte dans Flash a changé. Les films Flash Player travaillent désormais avec des textes codés en Unicode. Ce type de texte est normalisé et utilise un standard de caractère de codage. L'avantage est que chaque caractère est affecté d'une valeur numérique et d'un nom spécifique. Si le texte est utilisé sur plusieurs plateformes, chaque système reconnaît les caractères sur la base de leur codification. D'innombrables caractères spéciaux sont intégrés à ce codage (par exemple, les caractères accentués). Les formats Unicode les plus courants sont UTF-8 et UTF-16. Les textes externes doivent donc aussi être enregistrés sous ce format afin d'être chargé dans Flash. Les textes Unicode peuvent être enregistrés par le Bloc-Notes de Window par exemple. Il suffit de choisir comme codage UTF8.

On utilise l'objet LoadVars() pour retirer des données sous la forme d'une chaîne de caractères. Cet objet permet de charger des données (la méthode load) à partir d'un fichier texte, ou d'envoyer et de charger des variables provenant d'un script serveur (sendAndLoad).

Alors que Flash peut lire dans un fichier texte, notez qu'il lui est impossible d'écrire et de modifier ce fichier texte. Un script serveur est nécessaire dans ce cas.

Créer l'objet loadVars() est simple.

contenant = new LoadVars(); contenant.load("http://www.domaine.com/fichier.txt");

On peut utiliser les méthodes getBytesLoaded() et getBytesTotal() pour connaître le nombre d'octets à télécharger. Une fois que les données ont été chargées dans Flash, on peut les invoquer en utilisant leur nom de variable. Si on charge les données suivantes dans un objet LoadVars nommé data:

nom=Jerome&age=25&occupation=enseignant

Les variables et leurs valeurs peuvent être invoqués ainsi:

data.nom data.age data.occupation

Pour envoyer des données vers un script serveur, on utilise la méthode send().

monObjetLoadVars.send("http://www.domaine.com/script.php");

Une réponse du script serveur n'est pas envoyé en utilisant cette méthode. Il faut utliser la méthode sendAndLoad() pour recevoir la réponse de script serveur après exécution.

monObjetLoadVars.sendAndLoad("http://www.domaine.com/script.php", nomdObjetReceveur);

Les variables reçus après exécution du script serveur sont stockés dans un autre objet LoadVars qu'on a spécifié en invoquant la méthode sendAndLoad(). On peut alors se servir des variables reçues dans l'objet receveur.

On se sert de la méthode toString() pour transformer en chaîne de caractères les variables présentes dans un objet LoadVars() et les préparer ainsi à être transmises au script serveur.

monObjetLoadVars.toString();

Il n'y a qu'un seul gestionnaire d'événements associés à l'objet LoadVars, c'est onLoad. On l'utilisera pour exécuter des actions lorsque les données ont été reçues et chargées dans Flash.

Dans l'ordre, on procédera ainsi:

  1. Définir une fonction.
  2. Créer un objet LoadVars.
  3. Spécifier la fonction à exécuter quand le chargement sera complété.
  4. Invoquer la méthode load() de l'objet LoadVars.

Exemple:

fonction maFonction() { trace("chargement terminé"); } contenant = new LoadVars(); contenant.onLoad = maFonction; contenant.load(http://www.domaine.com/faisdequoi.php");
À propos | Formation | Ressources | Exercices
© 2004-2007, Jérôme Forget (ajouter au carnet d'adresses). Certains droits réservés.
Sous licence Creative Commons «Paternité - Partage des Conditions Initiales à l'Identique 2.0 Canada».
 Photos : stock.xchngPolitique de confidentialitéDéclaration qualité. Valide: XHTML | CSS.