Hello tout le monde.
Nous voulons faire une galerie. Notre swf appele un fichier xml.
Dans celui-ci, nous declarons le noms et le chemin des vignettes et des images correspondantes à afficher.
Dans nos scripts, pas de problèmes pour appeler le xml, et afficher les vignettes. Par contre nous n'arrivons pas à faire en sorte que lorsque on clique sur une petite vignette, la grande image lui correspondant s'affiche.
Ce que nous avons fait :
Un bouton est dupliqué autant de fois qu'il y a de lignes dans le xml.
Nous arrivons par exemple a ce que le bouton 7 s'affiche sur la vignette 7 mais impossible de lui faire afficher la grande image 7.
Voici les scripts que nous avons utilisé, si quelqu'un peut nous aider s'il vous plait :
Merci beaucoup
ps : (la balise actionscript semble ne pas prendre en compte les retours à la ligne, désolé pour la lisibilité)
frame 6 (le xml est chargé dans les frames précédentes):
/* tous les paramêtres suivants gagneraient à être transmis par le xml également, de la même façon que pour les urls des images ou les champs de texte de l'autre tutorial */
// les images vont s'inscrire dans un carre de coté:
_root.zoneTaille = 60;
// espacement entre les images:
_root.zoneEspace = 10;
_root.affichage = "Colonnes";
// ou "Lignes" , avec la majuscule
_root.nbColonnes = 2;
// la variable ci-dessous de sera donc pas prise en compte, dans cet exemple
_root.nbLignes = 3;
//Recupération des donnees du fichier xml
_root.galleriev = gallerieXml.firstChild.childNodes;
_root.lon = galleriev.length;
//nombre d'image à placer
for (i=0; i<_root.lon; i++) {
var nom = galleriev[i].attributes.petite;
//recupére le nom du fichier
// Création d'un clip vide:
_root.createEmptyMovieClip("bitmap_mc"+i, i-10);
_root["bitmap_mc"+i].loadMovie(nom);
//charge le jpeg
}
_root.picsLoaded = true;
frame 7
_root.picsLoaded=true;
for(i=0;i<_root.lon;i++){
if(_root["bitmap_mc"+i].getBytesLoaded() !=_root["bitmap_mc"+i].getBytesTotal())
_root.picsLoaded=false;
}
if(_root.picsLoaded == true)
_root.gotoAndPlay(8);
else
_root.gotoAndPlay(6);
frame 8
// Déplacement et redimensionnement du clip conteneur:
_root.a = 0;
//colonnes ou lignes (colonnes dans l'exemple)
_root.b = 0;
//lignes ou colonnes
for (i=0; i<_root.lon; i++) {
if (_root.a == _root["nb"+_root.affichage]) {
_root.a = 0;
_root.b++;
}
//maintenant on dispose les images à partir de x=0 et y=0
_root["bitmap_mc"+i]._x = (_root.affichage == "Colonnes" ? _root.a : _root.b)*(_root.zoneTaille+_root.zoneEspace)+18;
_root["bitmap_mc"+i]._y = (_root.affichage == "Colonnes" ? _root.b : _root.a)*(_root.zoneTaille+_root.zoneEspace)+48;
duplicateMovieClip(this.bouton, "bouton"+i, i+10);
this["bouton"+i]._x = (_root.affichage == "Colonnes" ? _root.a : _root.b)*(_root.zoneTaille+_root.zoneEspace)+18;
this["bouton"+i]._y = (_root.affichage == "Colonnes" ? _root.b : _root.a)*(_root.zoneTaille+_root.zoneEspace)+48;
nom=this["bouton"+i]._name;
finstr=String(nom).length;
numero=String(nom).substring(6,finstr);
trace(numero);
ligneXML=galleriev[i].attributes.grande;
this["bouton"+i].onPress = function() {
var nomgrande = ligneXML;
_root.createEmptyMovieClip("grande_mc", 1);
_root["grande_mc"].loadMovie(nomgrande);
_root["grande_mc"]._x = 170;
_root["grande_mc"]._y = 10;
};
a++;
}
stop();