DogNextDoor
Messages postés8Date d'inscriptionvendredi 7 mai 2004StatutMembreDernière intervention 3 septembre 2008
-
2 sept. 2008 à 21:15
Crazyx
Messages postés128Date d'inscriptionvendredi 4 avril 2003StatutMembreDernière intervention15 octobre 2008
-
4 sept. 2008 à 01:28
Bonjour,
Je suis devant un probleme que je n'arrive pas à résoudre.
Je viens solliciter de l'aide ici..!
J'ai des boutons _root.roll.gallery.loupe1, _root.roll.gallery.loupe2.. qui doivent ouvrir des images img1.jpg, img2.jpg.. dans un clip _root.pop_up crée avec la méthode movieClipLoader.
Vous me suivez ?
Le code est le suivant :
var i:Number;
for (i=1; i<=10; i++) {
var image = ["_root.roll.gallery.loupe"+i];
image.onPress = function() {
mcl.loadClip("img"+i+".jpg", _root.pop_up);
};
}
Qu'est ce qui cloche ?
DogNextDoor
Messages postés8Date d'inscriptionvendredi 7 mai 2004StatutMembreDernière intervention 3 septembre 2008 3 sept. 2008 à 03:17
Merci Crazyx,
C'est ca, il faut ecrire _root.roll.gallery["loupe"+i]
Maintenant le probleme est que tous les boutons me sortent la meme valeur i(la valeur la plus elevée possible +1)
Le probleme doit venir de la :
for (i=1; i<2; i++) {
var i:Number;
for (i=1; i<2; i++) {
var image = this.gallery["loupe"+i];
image.onPress = function() {
trace(i);
_root.mcl.loadClip("img"+i+".jpg", _root.pop_up);
};
}
Crazyx
Messages postés128Date d'inscriptionvendredi 4 avril 2003StatutMembreDernière intervention15 octobre 2008 3 sept. 2008 à 03:20
J'y pense, de mémoire, ta boucle ne marchera pas non plus.
crée trois bouton tt1, tt2, tt3
met ce code sur la timeline
i = 1;
while (i < 3)
{
var image = _root["tt" + i];
image.onPress = function() {
trace("click" + i);
}
i+= 1;
}
essaie, tu verras (j'ai pas essayé mais je suis presque sur) que le trace te renverra quelque soit le bouton cliqué : click3. i valant trois à la fin dans tout les cas. faut pas confondre boucle (portion de code qui s'execute jusqu'a ce que une condition soit remplie) et ecoute (en gros un detecteur d'evenements qui tourne tout le temps et qui renvoie les interactions avec l'utilisateur).
Ta solution (doit en exister des meilleurs, je te donne celle que moi je vois, il en existe des meilleurs très certainement), c'est d'affecter "en dur" le code ou de créer le code sur le bouton si tes boutons sont crée par duplicate.
en gros :
onClipEvent (enterFrame) {
this.onPress = function() {
...
}
}
En esperant t'avoir aidé
Vous n’avez pas trouvé la réponse que vous recherchez ?
Crazyx
Messages postés128Date d'inscriptionvendredi 4 avril 2003StatutMembreDernière intervention15 octobre 2008 3 sept. 2008 à 03:24
Bonjour,
j'ai écris le message avant de lire ta réponse, je vais le faire maintenant.
Bon bah finalement c'etait ca, la boucle n'est pas adapté à ce que tu veux faire.
Donc comme dis précedemment, soit tu met le code en dur
_root.roll.loupe1.onPress
_root.roll.loupe2.onPress
_root.roll.loupe3.onPress
...
yep, c'est pas beau.
Soit tu entre le code dans l'action des boutons (pas sur la timeline)
onClipEvent (enterFrame) {
this.onPress = function() {
...
}
}
N'hésite pas si tu bloques encore ou si les solutions sont inadaptés à certaines contraintes que tu peux avoir.
DogNextDoor
Messages postés8Date d'inscriptionvendredi 7 mai 2004StatutMembreDernière intervention 3 septembre 2008 3 sept. 2008 à 03:33
Merci pour ton aide,
Tu as raison, ca me renvoie tjrs la valeur la plus elevée.
Oui effectivemnt je peux toujours le faire en dur,
apres tout ce n est que du copier coller..
Je n'utilise pas la methode duplicate car je dois placer mes boutons manuellement.
mais j'aurais bien aimé savoir comment auomatiser tout ca.
Crazyx
Messages postés128Date d'inscriptionvendredi 4 avril 2003StatutMembreDernière intervention15 octobre 2008 3 sept. 2008 à 03:43
De rien DogNextDoor.
duplicatemovieclip() permet de dupliquer un clip existant (wow :p)
tu peux si tu veux créer les boutons dynamiquement placer le bouton loupe1
puis :
i = 2;
nwlbl = "loupe" + i
while (i < 4) /* si 4 boutons par ex */
{
this.loupe1.duplicateMovieClip(this.nwlbl, this.getNextHighestDepth());
/* pour placer tes boutons, les proprietes _x et _y. exemple pour les espacer de 10 points chacun à l'horizontale).
this.nwlbl._y += 10 * i;
this.nwlbl._x = les coordonnées x du bouton n° i
}
et tu met le code que j'ai mis précedemment dans le bouton loupe1. Avec la duplication, tous tes boutons auront le meme code, a toi de mettre les variable qu'il faut pour que ca marche pour chacun indépendamment.
c'etait juste pour info, si t'en a pas l'utilité, reste sur le code "en dur".
Ps: pense a mettre sujet résolu pour éviter que l'on visite le topic pr rien pr ceux qui passe répondre aux questions
DogNextDoor
Messages postés8Date d'inscriptionvendredi 7 mai 2004StatutMembreDernière intervention 3 septembre 2008 3 sept. 2008 à 16:17
Ca y'est c'est nickel.
Voici le code :
//DUPLICATION DES BOUTONS loupe1, loupe2, etc.
for (var i = 2; i<=5; ++i) {
this.loupe1.duplicateMovieClip("loupe"+i, this.getNextHighestDepth());
this["loupe"+i]._y += (i-1)*250;
this["loupe"+i]._x = 0;
trace(i);
}
this["loupe"+i].onPress = function(){
trace(_target);
}
//AFFECTATION A CHAQUE BOUTON D'UN INDICE QUI CHARGE UN JPEG ASSOCIE
//ainsi pour this.loupe2, on recupere l'indice 2, qui permet de charger img2.jpg
for (var j = 1; j<=5; j++) {
this["loupe"+j].indice = j;
this["loupe"+j].onPress = function() {
trace(this.indice);
var n = this.indice;
_root.mcl.loadClip("img"+n+".jpg", _root.pop_up);
};
}