Fonction sur boutons générés par duplicateMovieClip : probleme de variables

cs_maryvonne Messages postés 12 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 6 octobre 2010 - 13 nov. 2005 à 21:27
cs_maryvonne Messages postés 12 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 6 octobre 2010 - 15 nov. 2005 à 13:37
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();

2 réponses

cs_maryvonne Messages postés 12 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 6 octobre 2010
15 nov. 2005 à 12:03
Bonjour à tous,
Je remet une couche parce que j'ai vraiment besoin d'aide. Ca peut paraitre barbare comme ça mais je vous jure ce serait super que ça marche et surtout ce serait très dommage qu'un site dynamique se transforme en site statique pour une histoire de bouton.
Donc ce que j'arrive à faire, c'est afficher la grande image de la dernière ligne du xml et ce, peu importe le bouton sur lequel je clique.
J'espère à très bientôt
0
cs_maryvonne Messages postés 12 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 6 octobre 2010
15 nov. 2005 à 13:37
Bon pour ceux que ça interessent ... voici la solution :
il faut remplacer :

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;


};

par :
this["bouton"+i].ligneXML=galleriev[i].attributes.grande;

this["bouton"+i].onPress = function() {
var nomgrande = this.ligneXML;
_root.createEmptyMovieClip("grande_mc", 1);
_root["grande_mc"].loadMovie(nomgrande);
_root["grande_mc"]._x = 170;
_root["grande_mc"]._y = 10;


};
0
Rejoignez-nous