Gros souci avec mouseListener.onMouseWheel......

jacknikolson Messages postés 134 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 18 novembre 2012 - 23 févr. 2005 à 12:29
jacknikolson Messages postés 134 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 18 novembre 2012 - 24 févr. 2005 à 16:20
Salut à tous,
j'ai un souci de taille avec la fonction onMouseWheel...

Je pose le cadre:

Scène principale: un bouton et un clip "clip_mc"

code du bouton: on(release){_root.clip_mc.gotoAndPlay(2);}

"clip_mc" composé comme suit : image clé 10 le code suivant :
stop();
mouseListener = new Object();
mouseListener._owner = scrollerMc.draggerMc;
mouseListener.onMouseWheel = function(delta) {
this._owner._y += delta * -10;
};
Mouse.addListener(mouseListener);
et un "scrollerMc" qui contient un "draggerMc"
tout fonctionne bien et quand je fais défiler ma molette mon clip "draggerMc" se balade.....

seul probleme, si je relance mon clip_mc avec mon bouton, quand il relit la fonction onMouseWheel, la valeur du déplacement de "draggerMc" est 2 fois plus grande à chaque coup de molette....et ainsi de suite, si je le relance une 3e fois, le déplacement est 3 fois plus grand....

si je comprends bien c'est que ma valeur delta * -10 qui reste enregistrée devient delta * -20 puis delta * -30 etc....

comment faire pour remettre à zéro cette valeur?

il suffirait qu'à l'image 9 je mette un code qui réinitialise le tout, avant nouvelle lecture,mais je ne trouve pas.....

quelqu'un aurait-il une solution, en sachant qu'autant que possible je ne voudrais pas changer mon code car il y a d'autres éléments en jeu qui entrent en compte...

merci d'avance.

JAck

5 réponses

cs_tom Messages postés 1511 Date d'inscription samedi 8 décembre 2001 Statut Modérateur Dernière intervention 11 juin 2009
23 févr. 2005 à 13:59
Salut, je suppose que tu as juste besoin de faire un mouse.removeListener(mouseListener)
dés que tu n'as plus besoin de ton scroll. A chaque fois qu'il lance la
fonction, il accumule les listeners de la souris. C'est de la d'ou
vient ton probleme...
0
jacknikolson Messages postés 134 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 18 novembre 2012
23 févr. 2005 à 15:42
ok Tom, comme toujours tes interventions son bien claires et constructives.
ce que tu me propose me semble très logique, mais je dois faire une bêtise car ça ne marche pas.

Afin d'éviter 300000 post je me permets de te postre le fla en question ça devrait être plus parlant.
j'espere ne pas abuser....

sur le calque clip il y a un clip "fenetre" si tu rentres dedans il y a une interpolation et enfin un clip "a1" tout se joue dedans.....

http://perso.wanadoo.fr/free-evolution-project/mouse_problems.rar

si tu peux y jeter un coup d'oeuil ce serait sympa....

Merci

Jack
0
jacknikolson Messages postés 134 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 18 novembre 2012
24 févr. 2005 à 00:40
bon bien finalement j'ai résolu patiellement le souci...

après beaucoup d'essais dans tous les sens, je me suis rendu compte que si le mouseListener
se trouve dans un clip qui est dans un clip qui est dans un clip etc......ça merde et le Mouse.removeListener(mouseListener)
semble ne plus aire effet. Pourquoi ça reste un mystère...

Mais en attendant, en remontant tout d'un niveau et en mettant mon code dans le 1e clip, tout marche...

Donc ton indication était, bien sur, la bonne...

Merci.

Jack
0
jacknikolson Messages postés 134 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 18 novembre 2012
24 févr. 2005 à 12:25
bon, comme j'avais dit le problème était "partiellement résolu"...

en fait je crois avoir compris d'où vient réellement mon problème.... ma fonction est dans un clip dont la première image clé est vide. si je commande mon clip avec un bouton qui est dans le clip, tout va bien. Le mouseListener est enregistré et à la 2e lecture le removeListener fait son office correctement.. Le problème est que, si je commande mon clip de l'extérieur, tout ce passe comme si il était déchargé. Du coup, à la 2e lecture il trouve un removeListener qu'il ne sait pas à quoi appliquer puisque mouseListener = new Object(); vient après...ce qui est étrange c'est que les valeurs s'ajoutent quand même!

le pire c'est qu'en réalité tout ce truc se trouve dans un swf que j'appelle en _level1....

je ne sais pas si mes explications sont claires....

j'ai l'impression que pour bien faire, dans mon code il faudrait que je puisse mettre ce fameux delta à 0 mais je n'y arrive pas. je ne crois pas que ce soit possible vu qu'il ne s'agit pas d'une variable....

comment faire pour que mon code fasse les choses en 2 temps? d'abord donner une valeur à delta qui soit nulle puis... et seulement ensuite, appliquer le delta * -10 ???

vu que je charge et décharge plusieurs de ces scrolls depuis mon _level0 il faudrait que chacun d'eux soit autonome et s'initialise à 0 avant d'appliquer sa valeur de défilement.....ça fait des semaines que je me prend la tête là dessus car je voudrais bien poster mon truc en source (un vrai scroll avec molette tout en flash, sans html....qui scrolle du texte, du clip, et qui s'addapte tout seul comme un grand à son contenu, même si c'est géré par xml....) mais si il y a ce bug.....c'est pas gagné! en plus depuis hier j'ai réusi à faire en sorte que le scroll soit fonctionnel dans une zone déterminée...donc possible d'en mettre plusieurs ensemble....j'aimerais vraiment venir à bout de ce truc...

si tu repasses par là Tom, ou qui que ce soit d'ailleurs, merci de jetter un coup d'oeuil sur le fla..

@+ Jack
0

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

Posez votre question
jacknikolson Messages postés 134 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 18 novembre 2012
24 févr. 2005 à 16:20
bon .... cette foi ce semble la bonne...

à force de faire les questions réponses......

en mettant sur mon bouton d'appel du level0 Mouse.removeListener(_level1.mouseListener); tout se passe bien.....

je vais me coucher!
0
Rejoignez-nous