Var i et chargement dynamique de jpeg

Résolu
DogNextDoor Messages postés 8 Date d'inscription vendredi 7 mai 2004 Statut Membre Dernière intervention 3 septembre 2008 - 2 sept. 2008 à 21:15
Crazyx Messages postés 128 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 15 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 ?

Pour info, jusqu'a ce code ca marche--->

var image = _root.roll.gallery.loupe1;
image.onPress = function() {
mcl.loadClip("img"+1+".jpg", _root.pop_up);
};
}

Merci

15 réponses

Crazyx Messages postés 128 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 15 octobre 2008
3 sept. 2008 à 04:05
j'ai trouvé un truc sympa qui régle ton problème.
On appelle ca un indice.

par ex:
this["loupe"+i].indice = i;
this["loupe"+i].onPess = function(){
trace(this.indice);

essaie ca marche :)
3
Crazyx Messages postés 128 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 15 octobre 2008
3 sept. 2008 à 02:44
bonjour,

c'est ton affectation de valeur à image qui est mauvaise.
c'est plutot var image = _root["roll.gallery.loupe" + i];
0
DogNextDoor Messages postés 8 Date d'inscription vendredi 7 mai 2004 Statut Membre Derniè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);
};
}
0
Crazyx Messages postés 128 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 15 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é
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Crazyx Messages postés 128 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 15 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.

Bon courage.
0
DogNextDoor Messages postés 8 Date d'inscription vendredi 7 mai 2004 Statut Membre Derniè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.

En tout cas merci encore...
0
Crazyx Messages postés 128 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 15 octobre 2008
3 sept. 2008 à 03:35
Si tu adoptes une autre solution, fais nous le savoir, je suis curieux :)
0
Crazyx Messages postés 128 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 15 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

Bon courage
0
Crazyx Messages postés 128 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 15 octobre 2008
3 sept. 2008 à 03:45
"et tu met le code que j'ai mis précedemment dans le bouton loupe1."

je parle du code sur les premieres réponses (
onClipEvent (enterFrame) {

 this.onPress = function() {
...
}
}
0
DogNextDoor Messages postés 8 Date d'inscription vendredi 7 mai 2004 Statut Membre Dernière intervention 3 septembre 2008
3 sept. 2008 à 04:32
Top! Merci..

C'est ca, c'est vraiment cool!

Voici mon code final :
for (var i = 1; i<3; i++) {
this.gallery["loupe"+i].indice = i;
this.gallery["loupe"+i].onPress = function() {
trace(this.indice);
var n= this.indice;
_root.mcl.loadClip("img"+n+".jpg", _root.pop_up);
};
}

J'ai testé, ca marche.
Demain je m'attaque au duplicateMovieClip, ca m'a l'air passionnant!
0
DogNextDoor Messages postés 8 Date d'inscription vendredi 7 mai 2004 Statut Membre Dernière intervention 3 septembre 2008
3 sept. 2008 à 04:39
;)
0
Crazyx Messages postés 128 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 15 octobre 2008
3 sept. 2008 à 05:35
Bon courage, si tu en ressent le besoin, envoie moi un message privée, jt'aiderai autant que je peux
0
Crazyx Messages postés 128 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 15 octobre 2008
3 sept. 2008 à 05:37
tu peux faire comme ca :
for (var i = 1; i<3; i++) {

this.gallery["loupe"+i].indice = i;

this.gallery["loupe"+i].onPress = function() {

_root.mcl.loadClip("img"+ this.indice+".jpg", _root.pop_up);

};

}
0
DogNextDoor Messages postés 8 Date d'inscription vendredi 7 mai 2004 Statut Membre Derniè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);
};
}
0
Crazyx Messages postés 128 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 15 octobre 2008
4 sept. 2008 à 01:28
cool je suis content d'avoir pu t'aider.

Bonne continuation
0
Rejoignez-nous