Galerie d' image en AS3 et XML

Galerie d' image en AS3 et XML

14 mai | Catégorie: Flash | Rédigé par François | 15650 lectures

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.

Etape 1: Organisation

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:

Arborescence

 

Etape 2: Le Document XML

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.

 

Pourquoi utiliser XML?

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.

Etape 3: Prémices au développement

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...

Etape 4: Les fonctionnalités à programmer

Cette étape va consister à définir les fonctions dont nous allons avoir besoin, Il y'en aura 5 au total:

  1. Initialisation de l'application (lorsque le fichier XML est totalement chargée) -> "finDuChargementXML()"
  2. Changement d'images -> "changeImage()"
  3. Survol de la miniature (effets graphiques que nous allons appliquer) -> "overImage()"
  4. Clic sur la miniature -> "clicImage()"
  5. Quand on quitte la miniature -> "outImage()"

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.

Etape 5: Initialisation de la galerie

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.

Etape 5: Fonctionnalités sur les miniatures / Tween

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.

Etape 6: Fonction changeImage

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 <(^^,)>.

Creative Commons License
Cette création par Snoupix.com est mise à disposition selon les termes de la licence Creative Commons.
Partager ce tutoriel :
wikio scoopeo fuzz diggfr digg-design blogmemes delicious tapemoi yoolink bluegger pioche

72 Commentaires

gravatar
le 14 mai à 23h15 lazy Répondre Merci pour ce tuto, c'est propre et précis ! Bon boulot, c'est top.
gravatar
le 26 mai à 11h20 ninine2002 Répondre Bonjour,
le tuto est très sympa et bien réalisé, cependant je n'arrive pas à ouvrir le fichier flash source...
J'ai Adobe CS3, comment puis-je faire ?
gravatar
le 29 mai à 00h20 François Répondre Réponse à ninine2002:Bonjour,

le tuto est très sympa et bien réalisé, cependant je n'arrive pas à ouvrir le fichier flash source...

J'ai Adobe CS3, comment puis-je faire ?


Euh ouai le fichier a été fait sur CS4 et au niveau de la compatibilité c'est pas vraiment top.
Sinon ce que tu peux faire c'est téléchargé la version d'eval CS4 sur Adobe et le convertir ensuite pour CS3...Sinon un copier coller du code semble plus rapide :)
gravatar
le 11 juin à 17h53 nihi Répondre Très bon tuto, très clair!

Une question toutefois :

Si je souhaite placé ma galerie a des coordonnées précises dans mon .fla, comment faire?

Merci
gravatar
le 11 juin à 18h41 François Répondre Tu l'utilises de la même manière que tu utilises une miniature dans le fla, c'est à dire avec le composant UILoader
gravatar
le 11 juin à 20h42 nihi Répondre J'ai bien mis le UILoader dans ma bibliotheque, pourtant je ne trouve pas comment positioner la galerie... sad

Sinon j'ai essayé de charger la galerie depuis un .swf mais la encore toujours ce probleme de positionnement...

Si vous avez une solution je suis preneur car j'y ai passé l'après-midi et n'ai rien trouvé!

Merci d'avance
gravatar
le 12 juin à 01h14 François Répondre ben dans ton fichier flash principal tu l'importes comme ca:
var maGalerie:UILoader = new UILoader();
maGalerie.source = "galerie.swf";
//les coordonnées de ta galerie
maGalerie.x = 0;
maGalerie.y= 0;
//et tu l'affiches
this.addChild(maGalerie);

ca devrait fonctionner si tu as bien importer le composant UILoader
(ca doit être faisable soit avec la bibliothèque, soit avec un import en AS)

A+
gravatar
le 12 juin à 17h30 nihi Répondre aaaa excellent merci ça marche nikel!

Merci encore!
gravatar
le 22 juin à 14h53 yayaDesigner Répondre Salut ton tuto est super merci beaucoup !

Par contre je cherche un peu d'aide pour un point particulier. En faite je cherche à créer une galerie où les images s'affichent un peu aleatoirement sur ma scène.

Dans mon code, au niveau de la fonction "overImage()", j'aimerais que l'image actuel passe au premier plan. Cela fait déjà des heures que je cherche la solution et je n'ai pas encore trouvé. J'ai déjà tenter d'utiliser cette fonction :
e.currentTarget.setChildIndex() : mais sans succès.

Si tu pouvais me donner un petit coup de main, ce serait génial. Merci beaucoup !
gravatar
le 22 juin à 19h20 yayaDesigner Répondre En fin de compte j'ai trouvé mon erreur par moi même.

Pour ceux que sa interesse, au lieu d'utiliser e.currentTarget il faut lui preciser que c'est un displayobject que l'on utilise, et ensuite appliquer la fonction :

var uil:UILoader = e.currentTarget as UILoader;
setChildIndex(uil,numChildren - 1);
gravatar
le 22 juin à 22h52 François Répondre Ah oui bien joué....
Pour le reste de ton code le principe est la même
pour générer la position aléatoirement tu mets du random sur le x et le y et peut être sur l'angle de rotation... après tu agrandis ton UILoader quand tu as cliqué dessus... Après ce sont des maths... Je veux bien voir le rendu quand t'auras fini! smile
gravatar
le 28 juin à 23h25 BikS Répondre Salut!! merci pour le tuto! il est coool.
mais (il y a toujours un mais!^^) pour un débutant comme moi j'ai des problèmes de compréhension...
voila je me demande si les codes présents ci dessus sont bien distinct l'un de l'autre et collés séparément sur une image clés ou s'ils sont l'un a la suite de l'autre sur la meme image clé.... enfin je m'emmèlle les pinceaux c'est hallucinant! Oo vraiment merci s'il y a des réponses par ce que la je sèche! sa fait depuis 3/4 mois que je cherche a faire une gallerie as3 mais chaque fois je pige queudale! Oo ... un très grand merci si réponse positive il ya! ^^

bonne soirée.
gravatar
le 29 juin à 21h45 François Répondre Salut!
En fait tout le code se trouve dans la premiere image clé....Sinon télécharge la source si tu as un soucis...
Bonne soirée
gravatar
le 29 juin à 22h40 Skittles Répondre Très intéressant le tuto.

J'ai une question par exemple, est-il possible de rajouter plus de 9 miniatures? Si oui, comment. Merci pour la réponse!
gravatar
le 30 juin à 23h29 François Répondre Oui en rajoutant des lignes au fichier XML, c'est conçu pour ca à la base smile
gravatar
le 01 juillet à 19h01 Mimi Répondre J'ai réalisé ton tuto, mais j'ai parfois des problèmes lorsque je clic sur la miniature.
- parfois le bouton ne marche pas, donc l'image ne load pas
- les transitions ne se font pas jusqu'à la fin (la grande image reste en transparence par exemple)
J'ai regardé le démo et des fois aussi il y a ces problèmes. Est-ce que c'est juste moi (peut-être parce que je suis sur Mac) et y a-t-il une façon de corriger? Merci!
gravatar
le 07 juillet à 18h08 Hekthor Répondre Salut !

Superbe galerie que voilà...
Je pensais à une petite amélioration, dans le cas ou il y a beaucoup de miniatures... Je les ai toutes alignées en dessous de l'image principale, et il me faudrait créer une fonction qui repère la position de la souris et qui fait défiler cette galerie à gauche ou a droite.

J'arrive a penser la chose en as2, mais étant assez débutant en as3, j'ai quelques soucis...

Aurais tu quelques pistes à me proposer ?

Merci !
gravatar
le 08 juillet à 14h27 Zed Répondre Bonjour !
Superbe galerie : D

j'aurais une question.
Est-ce possible de faire en sorte qu'au démarrage, aucune image ne soit afficher ?

Que la 1ere photo ne s'affiche qu'a partir d'un clic sur une vignette ?

Merci
gravatar
le 08 juillet à 20h30 francois Répondre Réponse à Hekthor:Salut !

Superbe galerie que voilà...
Je pensais à une petite amélioration, dans le cas ou il y a beaucoup de miniatures... Je les ai toutes alignées en dessous de l'image principale, et il me faudrait créer une fonction qui repère la position de la souris et qui fait défiler cette galerie à gauche ou a droite.

J'arrive a penser la chose en as2, mais étant assez débutant en as3, j'ai quelques soucis...

Aurais tu quelques pistes à me proposer ?

Merci !


Essaye de creuser sur l'évènement mouseMove...


Zed, tu peux supprimer la ligne 7 de l'étape 5...
gravatar
le 09 juillet à 00h16 yayaDesigner Répondre Réponse à François:Ah oui bien joué....
Pour le reste de ton code le principe est la même
pour générer la position aléatoirement tu mets du random sur le x et le y et peut être sur l'angle de rotation... après tu agrandis ton UILoader quand tu as cliqué dessus... Après ce sont des maths... Je veux bien voir le rendu quand t'auras fini!


Oui tout a fait ... Pour sa, j'ai su y faire après ! Et comme je suis perfectionniste, ton idée est exactement celle que j'avais imaginé au départ smile Je te prévois un lien demain sur le rendu final, je pense que c'est pas trop mal pr le moment ... A voir :p
gravatar
le 10 juillet à 21h33 francois Répondre J'aime bien yayaDesigner, c'est bien parti en tout cas! Par contre les images en taille normale mettent du temps à se charger tu devrais peut être indiquer à l'utilisateur que ca charge...Après chez moi j'ai un débit pas tip top ^^

Sinon Hektor vérifie que tes images sont dans le bon élement parent.
gravatar
le 09 juillet à 10h31 Hekthor Répondre
Essaye de creuser sur l'évènement mouseMove...


Ah je ne connais pas cet évènement... Sinon en bidouillant, j'ai réussi à faire une scrollbar horizontale, mais avec des images fixes... Dès que j'intègre du xml, le défilement n'est plus pris en compte...

var centerX:Number = stage.stageWidth / 2;
var galleryWidth:Number = monClip_mc.width;
var speed:Number = 0;
addEventListener(Event.ENTER_FRAME, moveGallery);
function moveGallery(e:Event):void {
speed = -(0.05 * (mouseX - centerX));
monClip_mc.x+=speed;
if (monClip_mc.x>0) {
monClip_mc.x= (-galleryWidth/2);
}
if (monClip_mc.x<(-galleryWidth/2)) {
monClip_mc.x=0;
}
}

monClip_mc étant le conteneur où les images s'affichent...

Une idée ? :x
gravatar
le 09 juillet à 15h35 yayaDesigner Répondre Voici le lien comme promis de ma galerie avec l'idée que j'ai citée un peu plus haut ... : http://yayadesigner.fr.nf//galerie/index.php

ps : s'il y a des idées pour améliorer, je prend en compte ya pa de soucis n'hésite pas, et s'il y a des problèmes de CSS également !

A bientot et oublie pas de me donner tes impressions.
gravatar
le 12 juillet à 15h37 ajhx Répondre yop !

très belle gallerie merci. Petite question, comment déplacer les thumbs en bas de l'image principale et non à coté ? J'aimerais eventuellement les placés en bas pour ajouter des fleches suivant/précedent, mais je vois pas trop comment le placement des thumnails est géré.

merci en tout cas pour le boulot
gravatar
le 13 juillet à 15h58 François Répondre Pour les miniatures et leurs position c'est de la ligne 25 à 35 de l'étape 4
gravatar
le 15 juillet à 12h25 Aurélien Répondre salut!
merci François pour cette super galerie, et ce super tuto, très bien expliqué. Etant débutant sous Flash,
J'ai appris beaucoup de chose en suivant ce tuto. Mais, je n'arrive pas à le refaire complètement, quand je lance un aperçu, j'ai ce message:
Error #2044: ioError non pris en charge : text=Error #2035: L'URL est introuvable. URL: file:///Macintosh%20HD/%20galerie/images/2.jp
plus le même message pour toute mes miniatures.
Si j'ai bien compris, c qu'il n'arrive pas chargé l'URL? pour tant avec la variable (adresse) on lui indique où il est, non? Le texte de mon XML s'affiche mais pas mes images, je comprends pas trop.
En tout cas merci encore pour ce tuto, même si je galère un peu, je continue d'apprendre.Réponse à François:Pour les miniatures et leurs position c'est de la ligne 25 à 35 de l'étape 4
gravatar
le 15 juillet à 23h30 Fran Répondre Réponse à Aurélien:salut!
merci François pour cette super galerie, et ce super tuto, très bien expliqué. Etant débutant sous Flash,
J'ai appris beaucoup de chose en suivant ce tuto. Mais, je n'arrive pas à le refaire complètement, quand je lance un aperçu, j'ai ce message:
Error #2044: ioError non pris en charge : text=Error #2035: L'URL est introuvable. URL: file:///Macintosh%20HD/%20galerie/images/2.jp
plus le même message pour toute mes miniatures.
Si j'ai bien compris, c qu'il n'arrive pas chargé l'URL? pour tant avec la variable (adresse) on lui indique où il est, non? Le texte de mon XML s'affiche mais pas mes images, je comprends pas trop.
En tout cas merci encore pour ce tuto, même si je galère un peu, je continue d'apprendre.Réponse à François:Pour les miniatures et leurs position c'est de la ligne 25 à 35 de l'étape 4


En fait l'attribut source doit être rempli à partir d'une URL relative, c'est ) dire l'adresse de l'image à partir du fichier XML ( par exemple dossierImages/tonfichier.jpg)
gravatar
le 16 juillet à 17h50 Aurélien Répondre Réponse à Fran:
En fait l'attribut source doit être rempli à partir d'une URL relative, c'est ) dire l'adresse de l'image à partir du fichier XML ( par exemple dossierImages/tonfichier.jpg)

merci Fran pour ta réponse, j'y arrive tjrs pas. En fait faut-il que je rentre le chemin dans mon fichier XML, ou dans le code monObjetXML.maBaliseImage[positionDeLaBalise].attribute('src'); ?
Désolé de poster des questions sûrement évidentes,après 2 semaines de flash c pas évident mais j'aimerai vraiment arriver a intégrer un fichier XML dans flash. Merci de m'aider ou éventuellement de me rediriger vers un forum sympa.
gravatar
le 16 juillet à 20h34 François Répondre En fait au final dans le src final de ton appli flash tu dois renseigné le chemin pour accéder à ton image à partir du fichier fla...
Utilise des trace () pour vérifier que tu as le bon chemin (j'entends par chemin: le dossier qui mène à l'image+ le nom de l'image).

C'est normal d'avoir quelques soucis au bout de 2 semaines... Mais je pense que c'est un bon exercice pour apprendre à manier des composants, du XML, des effets , etc...
gravatar
le 17 juillet à 12h43 yann Répondre Hello, comment ajouter une ouverture d'url lorsque l'on clique sur une image ?

merci
gravatar
le 18 juillet à 23h49 Valbuena72 Répondre Re,
Moi j'ia juste un probleme c'est juste que le mot chargement reste tout le temps peut etre que mon image est pas assez grande ?
je mettrai tous sur le FTP demain ou Lundi
j'ai pour l'instant rajouté qu'une seule ligne :
chargement.selectable = false ;
lol et je trouve que ça fais plus pro comme ça donc voila
Merci a toi Francois pour ce tutoriel très bien fais
marche (presque) du 1er coup j'ai tout régler ^^ je verrai ça demain soir ou lundi par la suite pour personnaliser ^^
gravatar
le 26 juillet à 09h04 Steve Répondre Bonjour j'ai suivi les instruction mais j'obtiens ceci
1172: Definition fl.containers:UILoader could not be found.
1172: Definition fl.controls:ProgressBar could not be found.
1172: Definition fl.containers:UILoader could not be found.
1172: Definition fl.controls:ProgressBar could not be found.
1046: Type was not found or was not a compile-time constant: UILoader.
1180: Call to a possibly undefined method UILoader.
1046: Type was not found or was not a compile-time constant: UILoader.
1180: Call to a possibly undefined method UILoader.
1120: Access of undefined property monObjetXML.
1120: Access of undefined property positionDeLaBalise.

Ensuite je souhaite savoir si on peut placer les vignette comme on le souhaite autour des photoset comment faire.

Merci de votre aide.
Votre tutoriel est très bien fait
gravatar
le 02 août à 14h22 Chiko Répondre Plop !
Un très bon tuto mais j'ai quelques soucis !
Je lance le fichier swf en local et tout marche parfaitement, je peux changer les images sans soucis, en rajouter, etc...
Par contre dès que j'intègre le fichier swf dans une page web à l'aide de dreamweaver, en le plaçant sur mon FTP, le swf m'affiche "chargement en cours" sans arrêt.
Je suppose qu'il ne doit pas télécharger le fichier xml, mais après avoir modifié le code AS afin de donner les bonnes URL de mon site web, le problème n'est toujours pas résolu.
Voici les lignes de code que j'ai changé :

var dossierImage:String = 'http://cko74.free.fr/galerie/images/';
var dossierImageMini:String = 'http://cko74.free.fr/galerie/images/min/';

var adresse:URLRequest = new URLRequest ("http://cko74.free.fr/galerie/galerie.xml"wink;

Le lien où se situe l'application :
http://cko74.free.fr/

Merci de m'aider rapidement si possible wink
Tchuss !
gravatar
le 02 août à 23h21 François Répondre Salut
Euh vérifie la syntaxe de ton URLRequest, car tel qu'il apparait là avec le smiley tu as un ';' en trop wink
Redis si ca vient pas de la.
Sinon pour tes dossiers pas besoin d'URL absolues.
Tchao
gravatar
le 04 août à 09h39 Moad Répondre Magnifique tuto

J'aimerai vous remercier pour ce travail permettant aux gens de les aider tout comme moi smile

J'aurai juste une question...

J'aimerai pouvoir lorsque l'on survol la grande image en afficher une autre. Pour mieux vous expliquer pourquoi, j'aimerai que l'on puisse voir la différence entre une image originale et une image retouchée

Merci de bien vouloir m'aider

Cordialement Moad
gravatar
le 06 août à 00h08 Chiko Répondre Plop !
Je n'es pas eu le temps de retester car j'ai trouvé une tout autre galerie gratuite en flash big_smile
Malgré tout très bon tuto, je repasserai par là si 2 3 tutos simpa se pointent big_smile
Allez tchuss wink
gravatar
le 10 août à 14h55 Pheonax Répondre Bonjour,

Très beau tuto. Je suis nouveau en Flash et je ne trouve aucunes informations concrètes pour réaliser plusieurs pages de miniatures. Pour pouvoir mettre plusieurs photos sur l'animation mais n'avoir que maximum 15 photos par page de miniature et avoir des flèches en bas pour avoir une deuxième page avec 15 nouvelles images. Je ne sais pas si je suis très clair dans ma demande ^^

Merci d'avance smile
gravatar
le 17 août à 14h57 TanKer Répondre Merci pour ce tuto !

Même en étant débutant on peut faire une galerie avec un super rendu!
gravatar
le 27 août à 18h42 BrwK Répondre Salut et merci beaucoup pour ce tuto.
C est exactement ce genre de chose que je cherchais ^^

Bon le petit soucis qui se pose a moi, c est que j'ai flash cs3 donc pas de compatibilité avec le code source; vu ma tres faible connection je ne peux pas telecharger le trial de la CS4. (oui je suis un gars qui a la poisse..)

Quand je copy le code je recois les message d erreusr suivanst:
1172: Definition fl.containers:UILoader could not be found.
1172: Definition fl.controls:ProgressBar could not be found.
1172: Definition fl.containers:UILoader could not be found.
1172: Definition fl.controls:ProgressBar could not be found.
1046: Type was not found or was not a compile-time constant: UILoader.
1180: Call to a possibly undefined method UILoader.

+2 autre erreurs...
DOnc si quelqu un avait une source compatible cs3 que je puisse voir ce qui va pas, ca serait cool smile

Merci beaucoup. Ciao
gravatar
le 29 août à 02h04 Barna-bee Répondre Salut !

J'essaye d'adapter le code de ce (fameux) script mais je bute sur un point très délicat : l'endroit où les images vont s'afficher. Je souhaiterais, quelque soit la taille des images, qu'elles s'affichent toujours 5 pixels à gauche de la liste des miniatures (que j'ai mise à tout à droite) et toujours centrée dans la hauteur. Mais je ne trouve pas de solution n'étant qu'un scripteur autodidacte (et empirique), je n'y arrive pas.

Merci.

B.

P.S. : voici la simplification du code que j'ai faite :

import flash.net.URLLoader;
import flash.net.URLRequest;
import fl.containers.UILoader;
import fl.controls.ProgressBar;
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;
import flash.events.*;
import flash.text.*;
import flash.filters.*;

//Constantes
var dossierImage:String='images/';
var dossierImageMini:String='images/min/';

//Chargeur qui téléchargera notre fichier XML
var chargeur:URLLoader = new URLLoader ();
//objet URLRequest qui contient l'url du fichier XML:
var adresse:URLRequest=new URLRequest("galerie.xml");

chargeur.load(adresse);
chargeur.addEventListener(Event.COMPLETE, finDuChargementXML);

/*Une fois que le fichier XML est chargé...*/
function finDuChargementXML(evt:Event):void {
//Objet XML
var monXML:XML=new XML(evt.target.data);
//UILoader qui contiendra l'image originale
var photoPrincipale:UILoader = new UILoader();
photoPrincipale.source=dossierImage+monXML.image[1].attribute("src");

//JE METS VOLONTAIREMENT DES VALEURS ERONEES ICI POUR L'EXEMPLE :

photoPrincipale.x=0
photoPrincipale.y=0

photoPrincipale.scaleContent=false;


//Variable qui contiendra l'image qui est selectionnée
var select:String;

//On attache le Loader à la scene
this.addChild(photoPrincipale);

/*Pour les miniatures*/
for (var i:String in monXML.image) {
var uil:UILoader = new UILoader();
uil.source=dossierImageMini+monXML.image[i].attribute("src");
uil.buttonMode=true;
uil.name=i;
uil.x=693;
uil.y=5;
uil.y += int((int(i)/2))*52;
if (int(i)%2!=0) {
uil.x += (int(i)%2)*52;
}

uil.width=uil.height=48;
uil.alpha=0.5;
uil.scaleContent=true;
uil.autoLoad=true;

//Les écouteurs sur les miniatures
uil.addEventListener(MouseEvent.CLICK,clicImage);
uil.addEventListener(MouseEvent.MOUSE_OVER,overImage);
uil.addEventListener(MouseEvent.MOUSE_OUT,outImage);
this.addChild(uil);
}

/*Quand on clique sur une miniature...*/
function clicImage(e:Event):void {
//e.currentTarget.name correspond à la position de l'image
//Si l'image sur laquelle on a cliquée est déjà selectionnée, il ne se passe rien....
if (select==monXML.image[e.currentTarget.name].attribute("src")) {
return;
}

select=monXML.image[e.currentTarget.name].attribute("src");

//Et la photo s'en va de façon élégante
var myTweenA:Tween=new Tween(photoPrincipale,"alpha",Strong.easeInOut,1,0,.66,true);
var myTweenPPA:Tween=new Tween(photoPrincipale,"alpha",Strong.easeInOut,1,0,.66,true);
myTweenA.addEventListener(TweenEvent.MOTION_FINISH, changeImage);
}

/*Quand on veut changer d'image (logiquement après avoir cliqué sur une miniature)*/
function changeImage(e:Event):void {
//On change la source de l'image
photoPrincipale.source=dossierImage+select;

//Et la photo arrive de façon élégante
var myTweenPPA2:Tween=new Tween(photoPrincipale,"alpha",Strong.easeInOut,0,1,1,true);
}

/*Quand on passe la souris sur une miniature...*/
function overImage(e:Event):void {
//Effets cools de transitions
var myTweenMA2:Tween=new Tween(e.currentTarget,"alpha",Strong.easeInOut,.5,1,.5,true);
}

/*Quand on quitte la miniature*/
function outImage(e:Event):void {
//Effets cools de transitions
var myTweenMA:Tween=new Tween(e.currentTarget,"alpha",Strong.easeInOut,1,.5,.5,true);
}
}
gravatar
le 29 août à 12h03 Barna-bee Répondre Oups ! J'ai oublié, je sais pas si c'est utile, mais la résolution est de 800x600 pixels. Si ça aide...

Merci à vous.

B.
gravatar
le 30 août à 15h26 maizena Répondre Bonjour,

Trés bon tuto merci beaucoup, les tutos pour galeries cs3 ça court pas les rues.
J'ai juste un souci car je travaille avec flash cs3 et j'ai ce message qui s'affiche quand je converti ton fichier en cs3 : TypeError: Error #1088: Le marquage du document après l'élément root doit être composé correctement.
at galerie_fla::MainTimeline/finDuChargementXML()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()

impossible de trouver la solution. Merci
gravatar
le 01 octobre à 18h56 Bea Répondre Bonjour,

Super Tuto. Merci

Je cherche a inscrire le texte en 3 lignes?
Pouvez vous m'aider?
Merci
Je n'arrive pas a trouver de solution!
gravatar
le 13 octobre à 16h08 funP Répondre hi,
que dire de plus sur ce tutoriel il est tres bien et complet...

voila mon soucis j'ai des images de taille differente et je souhaiterais qu'elles soient alignés sur le bas de chaque ligne...

en gros je veut gerer le contenu de uiloader qui est displayobject...

quelq'un sait faire cela???
voila le code:

for (var i:String in monXML.image) {
var uil:UILoader = new UILoader();
uil.source=monXML.image[i].attribute("src");
uil.buttonMode=true;
uil.addEventListener(Event.COMPLETE,alignement);
;
uil.name=i;
uil.x=stage.stageWidth/6;
uil.y=50;
uil.y += int((int(i)/4))*190;

if (int(i)%4!=0) {
uil.x += (int(i)%4)*190;
}

function alignement(e:Event):void {
var uil:UILoader = e.currentTarget as UILoader;
var contenu:DisplayObject = uil.content as DisplayObject;

uil.scaleContent=true;
uil.autoLoad=true;
uil.setSize(170,170);
uil.alpha=0.5;
contenu.y=0;


}

addChild(conteneurVignettes);
conteneurVignettes.addChild(uil);

mais contenu faut deja 0 et quelques soit la valeur rien ne bouge...
gravatar
le 15 octobre à 08h55 ...MaR... Répondre Super tuto ! Etant débutante j'ai quand même un peu de mal, mais ça fait plaisir de trouver des gens comme toi prêt à nous aider. J'aimerai savoir comment changer la taille des vignettes et des images. Quelles lignes du code sont concernées ? Merci.
gravatar
le 22 octobre à 11h21 Dams Répondre Salut, merci pour cette galerie, elle est vraiment géniale pour commencer à bosser en AS3. Je travaille actuellement dessus pour en faire une classe. J'ai presque terminer mais je bloque sur un dernier point. Je n'arrive pas à comprendre comment et dans quelle fonction est ce que tu ajoutes ta grande image à ta scène.
Je pense que le conteneur est imagePrincipale mais pour le loader qui possède toute les infos pour loader la grande image, je sèche complètement. Peut tu éclairer ma lanterne ?
gravatar
le 23 octobre à 21h16 François Répondre Généralement pour afficher un objet dans la scène j'utilise this.addChild(tonObjet)...
après pour le positioner : tonObjet.x = ...
Voilà
gravatar
le 27 octobre à 18h40 Dams Répondre Pas de souci pour ça, je n'arrive pas à savoir comment appeler le bon conteneur pour charger les bonnes images. Si je fait this.addChild(photoPrincipale);
dans la fonction clicImage, il me charge les petites images dans le même conteneur au même endroit que les miniatures. Je n'ai pas d'erreur de code. C'est juste que je n'arrive pas à voir dans ton code à quel moment tu l'ajoutes à la scène.
J'ai vu que tu fait photoPrincipale.source=dossierImage+select;
Mais tu ne fait pas d'Addchild. Peux tu m'expliquer pourquoi ?
gravatar
le 29 octobre à 00h00 damn it Répondre merci pour ton tuto,
j'aurai enfin compris, mais non.

J'ai pourtant recopié ton code à la perfection.
rien ne s'affiche.
1084: Erreur de syntaxe : rightbrace est attendu devant end of program.
gravatar
le 29 octobre à 15h05 noob Répondre Même problème que damn it ! erreur 1084
gravatar
le 31 octobre à 03h24 François Répondre Ca ca vient forcément d'une accolade ou d'un point virgule oublié (ou en trop)
wink
gravatar
le 02 novembre à 00h42 zerocool Répondre Réponse à Mimi:J'ai réalisé ton tuto, mais j'ai parfois des problèmes lorsque je clic sur la miniature.
- parfois le bouton ne marche pas, donc l'image ne load pas
- les transitions ne se font pas jusqu'à la fin (la grande image reste en transparence par exemple)
J'ai regardé le démo et des fois aussi il y a ces problèmes. Est-ce que c'est juste moi (peut-être parce que je suis sur Mac) et y a-t-il une façon de corriger? Merci!


J'ai exactement le même problème, j'ai testé sur PC et MAC et le résultat est le même. Je pense que cela vient du fait que l'anim ce lance même si l'image n'est pas complétement chargé, je pense que l'idéal serait de rajouter un écouteur Event.COMPLETE juste avant de rajouter l'image à la scène. François peut tu nous aider à ce sujet ?
gravatar
le 02 novembre à 12h56 jejeaudio Répondre bonjour,
J'ai beau chercher, je ne trouve pas la ligne qui indique que c'est systématiquement la photo n°2 qui se charge d'office quand on vient sur la page.
Quelqu'un sait comment modifier cela pour laisser l'image n°1 prendre place?

merci d'avance.

(pour ceux qui ont des soucis de chargement en cours sans image, vérifiez que les extensions de vos fichiers images sont en minuscules et concordent avec le.xml)
gravatar
le 02 novembre à 14h48 zerocool Répondre Pour selectionner quelle image tu veux à l'ouverture de la galerie, tu as juste à changer le numéro de l'image entre crochet, ainsi que le texte qui s'y rapporte par la même occasion.

photoPrincipale.source = dossierImage+monXML.image[1].attribute("src");
texteAlt.text = monXML.image[1].attribute("alt");
gravatar
le 02 novembre à 15h57 jejeaudio Répondre Nickel ! Merci
(remplacer ligne 70 et 81 le [1] par [0])
gravatar
le 06 novembre à 03h37 TonyGuenzi Répondre Bravo , vraiment , un grand bravo & merci encore .
gravatar
le 08 novembre à 00h16 Arno Répondre Bonjour,
supers tuto très généreux de votre part!!
je voudrai a mon tour savoir...
comment placer plus de 15 images dans une partit " scrollable " par example dynamique ou pas car quand on ajoute plus de 15 images de le xml elles sortent du doc et ne sont donc pas visible merci pour votre réponse
gravatar
le 19 novembre à 21h19 lulubikette Répondre Bonjour très bon tuto
Yann à posé une question qui m'intéresse " comment ajouter une ouverture d'url lorsque l'on clique sur une image ? "

j'ai tout essayé et je ne trouve pas > <

merci
gravatar
le 21 novembre à 12h29 Aishuu Répondre J'ai galéré pour trouver l'ouverture d'url au clic de l'image, donc je te réponds ca pourra t'aider !


function openImage(e:Event):void{

var url:String = photoPrincipale.source.toString();
var request:URLRequest = new URLRequest(url);
navigateToURL(request, '_blank');
}

Bien sur tu places un écouteur sur l'image que tu veux écouter, du genre photoPrincipale.addEventListener(MouseEvent.CLICK, openImage);

Voila !


J'ai fais pas mal de modifs sur cette super galerie (merci beaucpup d'ailleurs !), mais la je cherche à effectuer un tri de mes images, et j'ai quelques soucis :

Quand je clique sur un bouton, genre "photo", il faudrait que les thumbview se réarrangent pour que n'apparaissent que les images qui ont le tag "photo"... en fait, j'arrive pas à supprimer l'ancienne liste de thumbview pour remplacer par la nouvelle avec juste celle du tag "photo"... Des idées pour supprimer toutes les uil d'un coup ?
gravatar
le 25 novembre à 15h49 Djin Répondre Bonjour

Super bon tuto

Malheureusement comme beaucoup j ai un petit souci:

je souhaiterais que les photos soient redimensionnées
est ce possible et si oui comment merci d avance

1084: Erreur de syntaxe : rightbrace est attendu devant end of program.
gravatar
le 05 décembre à 12h12 ilyesn Répondre Beau tutoriel !!!
gravatar
le 14 décembre à 22h09 salutation Répondre Dans le cadre d'un projet scolaire, ton turoriel m'a un peu servi et il a fallu que je tente de l'adapter pour un fichier externe .AS... nous avons le code suivant.

Selon l'avis de mes collègues, ça devrait normalement fonctionner mais il ne m'affiche rien dans mon swf et le fichier AS est bel et bien attaché au fla. Une idée d'Ou je me suis planté?


package{

import flash.display.MovieClip;
import flash.display.Stage;
import flash.events.MouseEvent;
import flash.events.Event;

public class Main extends MovieClip{

public static var larg:uint; //Variable qui fait référence à la larg du stage
public static var haut:uint; //Variable qui fait référence à la hauteur du stage
public static var leStage:MovieClip; //Ici leStage est défini comme étant un movie clip
public static var poissonSelect:Object=null; //Sert à afficher dans une boite de texte les statistique d'un poisson né ou sélectionné

public var oAquarium:Aquarium; //Sert pour certaine tâche entre le fichier AS Poisson et le Main.

/************************************************************************************
La fonction Main se sert de variables défini plus haut pour les assoiciés au width et
au height du stage. leStage devient ainsi "this" et oAquarium créer un nouvel aquarium
*************************************************************************************/

public function Main(){
Main.larg=stage.stageWidth;
Main.haut=stage.stageHeight;
Main.leStage=this;
oAquarium= new Aquarium(this);


/*********************************************
On créer les addEventListener pour les boutons
et pour afficher des textes.
*********************************************/
bt_aug.addEventListener(MouseEvent.CLICK, augmenterTemp)
bt_baisse.addEventListener(MouseEvent.CLICK, baisserTemp)
bt_net.addEventListener(MouseEvent.CLICK, nettoyer)
bt_nourrir.addEventListener(MouseEvent.CLICK, nourrirPoisson)
bt_nouveau.addEventListener(MouseEvent.CLICK, nouveauPoisson)
addEventListener(Event.ENTER_FRAME, afficherTexte);

}

/**********************************************************
Les function pour faire fonctionner les boutons dans le fla
***********************************************************/


/**********************************************************
La function augmenterTemp sert à augmenter la température
lorsque l'on clique sur le bouton augmenter dans l'interface.
***********************************************************/

public function augmenterTemp(e:MouseEvent):void{
oAquarium.temperature++;
affiche_temperature.text=oAquarium.temperature + "";
}

/**********************************************************
La function baisserTemp sert à baisser la température lorsque
l'on clique sur le bouton baisser.
***********************************************************/

public function baisserTemp(e:MouseEvent):void{
oAquarium.temperature--;
affiche_temperature.text=oAquarium.temperature + "";
}

/**********************************************************
La function nettoyer sert à nettoyer l'aquarium lorsque
l'on clique sur le bouton nettoyer. Une fois fait, l'alpha
du calque cl_salete revient à zéro et la function nettoyerA
du fichier Aquarium.as sert à remettre la variable salete à
zéro.
***********************************************************/

public function nettoyer(e:MouseEvent):void{
oAquarium.nettoyerA();
cl_salete.alpha=0;
}

/**********************************************************
La function nourrirPoisson sert à nourrir les poissons lorsque
l'on clique sur le bouton nettoyer.
***********************************************************/

public function nourrirPoisson(e:MouseEvent):void{
oAquarium.nourrirP();


}

/**********************************************************
La function nouveauPoisson sert à créers des poissons lorsque
l'on clique sur le bouton nouveau. Chacun vont avoir un nom
et des statistiques différentes.
***********************************************************/

public function nouveauPoisson(e:MouseEvent):void{
var poisson=new Poisson(); //Cette variable est utilisé pour créer un nouveau poisson
oAquarium.ajouterPoisson(poisson);
poisson.setAqua(oAquarium);
}



/*******************************************************************************
La fonction afficherTexte sert à afficher le nom et les statistique d'un poisson
********************************************************************************/

function afficherTexte(e:Event):void{
if(Main.poissonSelect!=null){
var lePoisson= Main.poissonSelect; //cette variable est associé à Main.poissonSelect, ça va servir à afficher des statistique du fichier AS Poisson
affiche_texte.text= "nom: " +lePoisson.nom +"\n"+
"Énergie: " +lePoisson.energie +"\n"+
"Vie: " +lePoisson.vie +"\n"+
"\n"+
"Résistance: "+"\n"+
"\n"+
"Pollution: " +lePoisson.resistPollution+ "\n"+
"Température: " + lePoisson.resistTemp;
}
}
}



}
gravatar
le 14 décembre à 22h10 salutation Répondre Ah marde, je me suis planté, non enfaite c'est ce code là, dsl de spammer ta page... XD


package {

import flash.display.Stage;
import flash.net.URLLoader;
import flash.display.Loader;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.URLRequest;
import flash.display.MovieClip;

import fl.transitions.Tween;
import fl.transitions.TweenEvent;
import fl.transitions.easing.*;

public class gallerie extends MovieClip{

public var dossierImage:String='media/jonathan_hudon/images/';//chemin pour l'image principale affiché
public var dossierImageMini:String='media/jonathan_hudon/images/min/';//chemin pour les mini image pour la galerie

public var chargeur:Loader;
public var adresse:URLRequest=new URLRequest("contenu.xml");//ici, nous chargeons le contenu du fichier xml.

public function gallerie() {
chargeur = new Loader();
addChild(chargeur);
trace(finDuChargementXML);
chargeur.addEventListener(Event.COMPLETE, finDuChargementXML);
chargeur.load(adresse);
}
/************************************************************************
Cette function se déclenche quand le chargement du fichier est terminé et
quand c'est fait, nous avons l'image principale qui va s'afficher ainsi
que la galerie d'image.
*************************************************************************/

public function finDuChargementXML(evt:Event):void {

trace("ALLOOOOO");
var monXML:XML=new XML(evt.target.data);//ici on charge le XML


trace(monXML)
/***********************************************************************************
Dans cette variable, nous définissons imagePrincipale comme étant un UILoader,
ensuite, nous défissons la source de ce que la variable dois charger tous ce qui
porte l'attribue src à partir du fichier XML (monXML). On donne ensuite une position
fixe à l'image selon un x et un y.
************************************************************************************/

var imagePrincipale:Loader = new Loader();
imagePrincipale.load(new URLRequest(dossierImage+monXML.image[1].attribute("src")));
imagePrincipale.x=31;
imagePrincipale.y=100;

var translation:Array=[imagePrincipale.x,imagePrincipale.y-100];//la transition quand une nouvelle image est selectionné

var select:String;//on défini la variable select comme était une chaine de caractère
addChild(imagePrincipale);//nécessaire pour affichier l'image principale

/********************************************************************************
Dans cette boucle for, on défini une var i qui parcour tout ce qui se trouve dans
le xml pour ensuite l'associer à une image dans le dossier des petites image tout
comme l'image principale, on donne une position en x et en y de la galerie de
petites images et nous les enlignons par colonnes de 3.
********************************************************************************/

for (var i:String in monXML.image) {
var uil:Loader = new Loader();
uil.load(new URLRequest(dossierImageMini+monXML.image[i].attribute("src")));
uil.name=i;
uil.x=352;
uil.y=72;
uil.y += int((int(i)/3))*80;
if (int(i)%3!=0) {
uil.x += (int(i)%3)*80;

}

uil.width=uil.height=70;
uil.alpha=0.5;

uil.addEventListener(MouseEvent.CLICK, cliquerImage);//on fait appel à la fonction cliquerImage durant un mouseEvent

this.addChild(uil);//toujours nécessaire pour afficher la galerie.
}

/*************************************************************************
Cette fonction sert à définir ce qui va arriver si on clique sur une image
**************************************************************************/

function cliquerImage(e:Event):void {
if (select==monXML.image[e.currentTarget.name].attribute("src")) {
return;
}

select=monXML.image[e.currentTarget.name].attribute("src");

var myTweenA:Tween=new Tween(imagePrincipale,"alpha",Strong.easeOut,1,0,1,true);
var myTweenPPW:Tween=new Tween(imagePrincipale,"x",Strong.easeIn,translation[0],translation[1],1,true);
myTweenA.addEventListener(TweenEvent.MOTION_FINISH, changerImage);
}
/**************************************************************************
Cette fonction sert à changer l'image une fois que nous avons cliqué dessus
***************************************************************************/
function changerImage(e:Event):void {
imagePrincipale.load(new URLRequest(dossierImage+select));

var myTweenPPA2:Tween=new Tween(imagePrincipale,"alpha",Strong.easeInOut,0,1,1,true);
var myTweenPPW2:Tween=new Tween(imagePrincipale,"x",Strong.easeOut,translation[1],translation[0],1,true);
}
}

}
}
gravatar
le 16 décembre à 12h24 skabs Répondre Salut ! Super Tuto, il fonctionne très bien big_smile

En revanche comme d'autres l'on demandé,serait-il possible de savoir comment rajouter des flèche dans les miniatures ? Car quand je rajoute des images elles se glissent au fur et à mesure les unes en dessous des autres...

Merci .
gravatar
le 26 décembre à 19h09 Kay54 Répondre Bonjour,
Je viens de de tomber sur votre tutoriel de galerie flash que je trouve nickel... Il est paramétrable facilement par un débutant comme moi. Cependant j'aurai une question, faisant mon site perso de photographie, tout en flash, j'ai essayé de mettre cette galerie sur différentes keyframes chacune pour une catégorie de photo, exemple keyframe 7 mode, keyframe 8 illustration... Ensuite j'ai fais mon menu et j'ai scripté les boutons avec la commande on (release) gotoAndStop (nbr keyframe), le hic c'est que rien ne s'affiche, pourtant pour chaque galerie j'ai un fichier XML différent, un dossier image différent...

Je ne vois pas d'où cela peux venir, pouvez vous m'éclairer... Merci
gravatar
le 26 décembre à 19h56 Kay54 Répondre Je viens de trouver pour mes boutons menu le script c'est ça illustration.addEventListener(MouseEvent.CLICK,function_name);

function function_name (event:MouseEvent):void {
gotoAndStop(6);
}
J'étais encore sur du AS2...
Autrement pour le problème des galeries toujours pas trouvé, il semblerai qu'il y ai des conflits entre certaine fonctions
gravatar
le 05 janvier à 01h56 Nootcho Répondre Bonjour Snoopix,

Comment je pourrais limiter le nombre de miniatures affichées avec système de pages et boutons suivant et précédant...Merci beaucoup pour ton tuto.
gravatar
le 14 janvier à 19h23 Kami Répondre Merci !, très bon tuto très instructif pour moi qui débute en AS.

Par contre une chose me frappe : pourquoi la variable i est elle une chaine de caractères et non un nombre a la ligne 25 de la partie 4 ?
gravatar
le 13 février à 14h22 cerise Répondre Vraiment une tout bon tuto
bravo et merci pour le partage
gravatar
le 22 février à 14h34 Waxen Répondre Bonjour super cool le tuto chui vraiment hyper debutant mais je voudrais savoir si c possible que j'integre un swf a un fla si oui comment je m'y prend
un grand merci davance pour vos reponse
gravatar
le 23 février à 19h32 orell1 Répondre Bonjour,
je voulais savoir comment faire pour ajouter un lien cliquable différent sous chaque photo agrandie???

EXEMPLE :

<image src="underwater.jpg" alt="DepthCore - Underwater (David)"/>

comment faire pour que le :DepthCore - Underwater (David) devienne cliquable ???

Merci à tous
gravatar
le 05 mars à 11h57 Nagneau Répondre Réponse à François:ben dans ton fichier flash principal tu l'importes comme ca:
var maGalerie:UILoader = new UILoader();
maGalerie.source = "galerie.swf";
//les coordonnées de ta galerie
maGalerie.x = 0;
maGalerie.y= 0;
//et tu l'affiches
this.addChild(maGalerie);

ca devrait fonctionner si tu as bien importer le composant UILoader
(ca doit être faisable soit avec la bibliothèque, soit avec un import en AS)

A+



Bonjour,
je suis débutante en création de site web. J'ai le même problème que lui, mais je ne comprend pas les explications... Je ne comprend pas quoi écrire ni où, ni comment importer le composant UILoader, etc...

Help...
Merci d'avance

Requête en cours, veuillez patienter...

Ajouter un commentaire