Agire sur plusieurs même clip

Résolu
arkelode Messages postés 2 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 9 décembre 2009 - 24 févr. 2008 à 16:00
sinippe Messages postés 137 Date d'inscription dimanche 24 avril 2005 Statut Membre Dernière intervention 7 août 2008 - 24 févr. 2008 à 18:11
Hello,
j'ai copié plusieur fois le même clip sur la scène principal à l'aide de la fonction "liaison" (click droit sur le clip dans la bibliothèque).

Je désire que tous les clips bouge en onRollOver mais je n'y arrive pas!!! Il n'y a que un seul des clips qui bouge....... pk?

numCercle = 0;
for (z=0; z<10; z++) {
for (i=0; i<11; i++) {

_root.attachMovie("cercle","cercle"+numCercle,numCercle);
_root["cercle"+numCercle]._x = 50*i;//20+(50*i); pour starter à 20
_root["cercle"+numCercle]._y = 50*z;//20+(50*i); pour starter à 20

numCercle++;
}
}

bt.onRollOver = function() {
y = 0;

_root["cercle"+y].position_finaleX = 100+ (Math.random()* (200 - _root["cercle"+y]._width) );
_root["cercle"+y].position_finaleY = 100 + (Math.random()* (200 - _root["cercle"+y]._height) ) ;

_root["cercle"+y].onEnterFrame= function(){
_root["cercle"+y]._x = _root["cercle"+y]._x + ((_root["cercle"+y].position_finaleX - _root["cercle"+y]._x)/5)
_root["cercle"+y]._y = _root["cercle"+y]._y + ((_root["cercle"+y].position_finaleY - _root["cercle"+y]._y)/5)

}
};

1 réponse

sinippe Messages postés 137 Date d'inscription dimanche 24 avril 2005 Statut Membre Dernière intervention 7 août 2008
24 févr. 2008 à 18:11
Yo !
J'suppose que ton clip qui bouge, c'est le dernier à avoir été attaché (le terme n'est peut être pas très correcte, mais c'est en référence à attachMovie). C'est normal.
Déjà, tu te compliques la vie : pourquoi définir les variables "y" et "numCercle" puisqu'elles auront à chaque exécution de la boucle for la même valeur que "i" ?
exemple :
for (i= 0; i<11; i++) { _root.attachMovie("cercle","cercle"+ i , i);
Donc là, pas de souci, ton clip sera bien attaché 11 fois.

Ton problème de rollOver vient du fait que tu souhaites utiliser la variable "i" une fois la boucle for terminée. Ce qui aura donc pour effet de cibler uniquement le clip "cercle10" (dernière valeur de i).
C'que tu peux commencer par faire, c'est déjà sortir le rollOver de tes boucles for et faire quelque chose comme ça :
bt.onRollOver =function() {
    for(j= 0; j<ta_valeur; j++) {
       //actions
    }
}
Et dans ta boucle for, comme tu utilises un onEnterFrame, à la place d'avoir quelque chose du type
_root["cercle"+j].onEnterFrame =function() {
    _root["cercle"+j]._x = _root["cercle"+j]._x ..... etc...

Tu peux très bien te simplifier la vie de cette façon :
_root["cercle"+j].onEnterFrame=function() {
    this ._x = this._x + ...... // on utilise this puisqu'avec le onEnterFrame, on se trouve "à l'intérieur" du clip _root["cercle"+j]

En espérant t'avoir aidé.
Bon courage !
3
Rejoignez-nous