
Ce tutoriel va vous apprendre à manipuler en ActionScript 3 un document XML afin d'en extraire du contenu. Nous ferons appel à plusieurs outils de Flash avec la classe Tween (qui nous permettra de réaliser des effets) et d'autres composants comme les UILoader intégrés à Flash.
Ce tutoriel est exclusivement un tutoriel de programmation dans le sens ou nous allons utiliser Flash juste pour son éditeur de code. Je voudrais aussi signaler l'origine de ces images qui proviennent du fabuleux collectif Dephtcore.
Avant toute chose il est essentiel de prévoir comment nous allons arranger la structure de notre application. Nous aurons donc à la racine de notre application 3 Fichiers (notre fichier flash .fla, notre exécutable .swf, et enfin le fichier XML). Le dossier quant à lui contient toutes les photos de notre galerie. Ce dossier contiendra lui-même un dossier de miniatures (dont les noms des images seront les mêmes que pour les originaux). Cela devrait donner ceci:

Si vous n'avez jamais entendu parler ou utiliser de XML, cela ne devrait pas nuire au tutoriel. En fait voyez-le comme un langage qui vous permettrait de structurer vos données. Un peu comme de l'xHTML ou vous appeleriez vos balises comme bon vous semble (xHTML est en fait de l'XML...). Bref nommez votre fichier galerie.xml contenant cette structure:
Nous aurons donc une balise "galerie" comportant plusieurs balises "image" ayant eux-mêmes 2 attributs: "src" et "alt" (très inspiré des attributs HTML). l'attribut "src" contient la source de l'image (autrement dit son nom), tandis que "alt" informe sur le texte alternatif.
La nécessité d'avoir un document XML pour notre galerie d'images répond principalement à 2 objectifs. D'une part, pour rajouter une image à notre galerie, nous ne sommes pas obligé d'avoir Flash, un bloc-notes suffit. Bien que cet argument tombe à l'eau si nous utilisions un fichier ActionScript externe. Le second avantage est étant donné la popularité du XML celui-ci peut être lu et interprété par une multitude de langage comme PHP, Javascript... Nous pourrions donc avoir un seul fichier contenant toutes les sources pour toutes les applications.
Nous allons utiliser uniquement la partie "développement" de Flash, et tout manipuler à l'aide du langage ActionScript 3. Tout d'abord créez un document Flash AS3, puis dans les propriétés redimensionnez-le à 800px par 450 px puis dans le scénario faites un clic droit sur la première image et choisissez "Actions", Une fenêtre s'ouvrira, c'est ici que vous coderez votre application.
La première étape va consister à importer les classes qui nous intéressent pour la suite...
Cette étape va consister à définir les fonctions dont nous allons avoir besoin, Il y'en aura 5 au total:
Avant de commencer à développer ces fonctions il va falloir commencer par initialiser les composants dont on aura besoin, de charger le fichier XML, les constantes, etc.
Ce bout de code permet donc de charger le fichier XML à l'aide de la classe URLLoader et de lui attribuer un évènement "Event.COMPLETE" qui éxécutera la fonction finDuChargementXML() lorsque le fichier XML sera totalement téléchargé. On en profite aussi pour créer 2 champs TexteField correspondant aux textes de Chargement et de Description.
Cette étape est la plus importante, et va consister à créer la base de notre application avec comme support les données de notre document XML. Voici le code, je l'explique plus bas :
La fonction prend obligatoirement en paramètre un Evènement puisqu'il est issu de "Event.COMPLETE". Cet évenement contient les données brutes du document XML grâce à sa propriété target.data. Il faut donc créer ensuite un objet XML pour faciliter le parsage de celui-ci. Par la suite nous créons un composant UILoader contenant la première photo.
Pour parser un fichier XML en AS3, c'est une chose assez simple: il faut avoir à l'esprit qu'il faut zapper la balise "racine", c'est à dire galerie. Voici comment on accède à l'attribut d'une balise:
L'utilisation est donc logique et assez similaire à SimpleXML, si vous utilisez PHP. Cela se corse légèrement pour les miniatures qu'il faut positionner dynamiquement. Pour faire une boucle sur toutes les images de notre fichier XML, la syntaxe est un peu plus particlière, la variable "i" correspondant à la position de la balise, 0 étant la première image. Enfin à ces miniatures, on leur ajoute 3 écouteurs : un clic, un mouseover et ou mouseout.
Pour ce code, rien de bien particulier, si ce n'est l'utilisation de la classe Tween qui fait son apparition: elle permet de faire des transitions de manière très simple, voici sa synthaxe:
var maTransition:Tween = new Tween(
l'objet sur lequel on applique l'effet ,
la propriété à changer ,
la classe de transition à utiliser ,
la valeur de Départ ,
la valeur Finale ,
le temps de la transition en secondes ,
booléen qui détermine si la durée est en image ou en secondes
);
Voilà après de vous amuser :), Enfin notez la méthode qui vous permet de savoir a quelle image correspond la miniature: dans ma fonction finDeChargement, j'avais attribué une propriété name à chacune d'entre-elles et correspondant à leur position dans le document XML. Ce qui facilite la tâche. Vous n'aurez qu'à la réutiliser en utilisant e.currentTarget.name.
Pas grand chose à signaler pour cette dernière étape, nous changeons la propriété source de notre UILoader principal et le texte du champ alternatif.
J'espère que ce tuto vous aura appris certains trucs, en tout cas tout le code source est comme d'habitute là ou il faut <(^^,)>.