Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flash > AS3
AS3 Questions relatives à la programmation ActionScript 3 (Cours AS3)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/12/2007, 18h46   #1
Nouveau Membre du Club
 
Inscription : décembre 2007
Messages : 32
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : décembre 2007
Messages : 32
Points : 34
Points : 34
Envoyer un message via MSN à rockntrek
Par défaut Tableau, Boucle, URLRequest

Bonjour !

Voilà je vous explique mon problème pas très simple à comprendre...
Je suis en train de réaliser une galerie de photos. Cette galerie se compose de miniatures sur lesquels un click de la souris ouvre la photo en plus grande résolution.

J'ai 83 miniatures de photos sur ma scène. Je souhaite donc ajouter à chacune d'elles un écouteur de type MouseEvent.CLICK afin d'écouter le click de la souris sur chaque miniature :
Code :
1
2
3
4
5
6
7
8
 
for(i = 1; i < 84; i ++) {
 
// rando2005Miniature1_mc représente par exemple la première miniature photo.
 
this["rando2005Miniature" + i + "_mc"].addEventListener(MouseEvent.CLICK, rando2005ChargementPhotos);
 
}
Donc me voilà avec 83 écouteurs en mémoire qui écoutent chacun leur miniature.

Maintenant, je créé un tableau afin d'enregistrer en mémoire les chemins des photos agrandie :

Code :
1
2
3
4
5
6
7
8
9
10
 
var urlPhotosRando2005:Array = new Array();
 
// Je fais commencer mon tableau à 1
 
for (i = 1; i < 84; i++) {
 
urlPhotosRando2005[i] = "trekPhotos/rando2005Photo" + i + ".jpg";
 
}
J'ai donc maintenant tout les chemins des photos agrandies en mémoire.

Sachant que les écouteurs appellent tous la même fonction "rando2005ChargementPhotos", comment déclarer, dans celle-ci, l'association de la miniature avec l'élément du tableau qui lui correspond...

En gros, comment associer "rando2005Miniature1_mc" à "urlPhotosRando2005[1]" dans la fonction "rando2005ChargementPhotos"...

C'est la question ...

J'ai commencé à écrire ceci :

Code :
1
2
3
4
5
6
7
8
9
10
 
public function rando2005ChargementPhotos(evt:MouseEvent):void {
 
chargeurImages.load(new URLRequest(urlPhotosRando2005[i]));
 
chargeurImages.contentLoaderInfo.addEventListener(Event.OPEN, ouvertureChargementPhoto);
chargeurImages.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressionChargementPhoto);
chargeurImages.contentLoaderInfo.addEventListener(Event.COMPLETE, finChargementPhoto);
 
}
Et je bloque, je ne vois pas comment faire l'association... Quelqu'un pourrait-il me donner une piste ?

D'avance merci.

Yann
rockntrek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2008, 00h52   #2
Nouveau Membre du Club
 
Inscription : décembre 2007
Messages : 32
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : décembre 2007
Messages : 32
Points : 34
Points : 34
Envoyer un message via MSN à rockntrek
C'est bon j'ai trouvé

Il suffit d'ajouter une variable associée à chaque miniatures :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
    var numero:int = new int();
    var urlPhotosRando2005:Array = new Array();
 
    for (i = 1; i < 84; i++) {
            // Enumération des miniatures
            this["rando2005Miniature" + i + "_mc"].numero = i;
            // Création des urls dans le tableau
            urlPhotosRando2005[i] = "trekPhotos/rando2005Photo"+i+".jpg";
            // Création des écouteur souris
            this["rando2005Miniature" + i + "_mc"].addEventListener(MouseEvent.ROLL_OVER, miniatureRollOver);
            this["rando2005Miniature" + i + "_mc"].addEventListener(MouseEvent.ROLL_OUT, miniatureRollOut);
            this["rando2005Miniature" + i + "_mc"].addEventListener(MouseEvent.CLICK, rando2005ChargementPhotos);
    }
 
    public function rando2005ChargementPhotos(evt:MouseEvent):void {
            chargeurImages.load(new URLRequest(urlPhotosRando2005[evt.currentTarget.numero]));
            chargeurImages.contentLoaderInfo.addEventListener(Event.OPEN, ouvertureChargementPhoto);
            chargeurImages.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressionChargementPhoto);
            chargeurImages.contentLoaderInfo.addEventListener(Event.COMPLETE, finChargementPhoto);
    }
rockntrek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2008, 18h22   #3
Invité de passage
 
Inscription : décembre 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 2
Points : 1
Points : 1
salut.
Je me trouve en ce moment devant un problème similaire, avec une réponse qui doit être tout aussi simple, mais je bloque depuis 24h
Pour avoir la liberté de nommer mes miniatures ainsi que mes grandes images librement, je passe par un XML dont voici la structure:
<printGallery> //noeud racine
<Pic>
<thumb>portofolio/thumbs/machin_Th.jpg</thumb>
<big>portofolio/img/machin.jpg </big>
</Pic>
</printGallery >

voici l'AS après "loadage" du XML
Code :
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
 
 private function loadedXML(e:Event){ 
 
     xml = XML(e.target.data);  
     xmlList = xml.children(); //children = < pic > 
     for (var i:int = 0; i < xmlList.length(); i++) { 
         var vignette:thumbContener = new thumbContener(); //mc generique de la bibliothèque
         tabMC[i] = vignette;//tableau pour stocker les occurence de MC 
         addChild(vignette); 
         tableauThumbs[i] = new Loader();//tableau recupérant les URLs des thumbs 
         vignette.addChild(tableauThumbs[i]); 
         tableauThumbs[i].load(new URLRequest(xmlList[i].thumb));                            ableauThumbs[i].contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); 
         vignette.addEventListener(MouseEvent.MOUSE_UP, onClic); 
         } 
         } 
     private function onComplete(e:Event){ 
         indexThumbs++; 
         var  cible:MovieClip = e.target.content.parent.parent;  
         cible.x = Math.random() * (stage.stageWidth - cible.width);  
         cible.y = Math.random() * (stage.stageHeight - cible.height); 
         cible.buttonMode=true; 
         } 
     private function onClic(e:MouseEvent){ 
         //euuuuuuuhhhhhhh! arrrrgh!!! mmmmmmfffhhhh!! grrrrrrrrrrr! 
         }
une idée pour faire la correspondance des URLs?
laforge est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h06.


 
 
 
 
Partenaires

Hébergement Web