Molette de la souris s'accumulant...

Gloradan Messages postés 1 Date d'inscription lundi 16 mars 2009 Statut Membre Dernière intervention 19 mars 2009 - 19 mars 2009 à 17:49
cs_angela07 Messages postés 8 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 24 octobre 2009 - 20 oct. 2009 à 21:21
Chers amis bonjour.

J'ignore si mes interrogations trouveront une réponse ici, mais j'éspère tout de même et remercie à l'avance les coups de mains.

Pour poser les bases de ma question:
Je développe de façon "amateur" un site semi pro pour ma PME. J'utilise Flash pour cela (et oui flash seul, je sais, c'est maaaaaaal).
J'ai créé un joli site, avec une animation qui sert "d'interface" avec des boutons qui "appellent" les différentes rubriques (sous forme d'animations isolées) à l'intérieur de la première (l'interface).

Dans l'une de ces rubriques, j'ai créé une galerie de photo (avec des liens vers un document XML qui me permet de changer les photos de la galerie sans passer par flash.) Pour plus de lisibilité, j'ai créé des vignettes dans une animation autogénérée en duplication des vignettes qui chacune va chercher son image. Bon. C'est pas trés clair. Mais ce qu'il faut retenir, c'est que j'ai une animation de grande taille (4250pixels de haut) que j'ai eu envie de faire défiler dans la fenêtre avec la souris... Coté utilisateur...

Barre de défilement, avec un scroller au centre qui repère les coordonnées et les "transfert" à l'animation qui du coup déscend et monte en fonction de la position du point.
Mais j'ai voulu aller plus loin et faire agir la molette de la souris pour le défilement de cette même animation. Comme avec une barre de défilement donc.

Mon animation fonctionne, je suis content, j'ai codé et cherché et ça marche

A UN détail près: Chaque fois que je load l'animation (chaque fois que je relance la rubrique...) la molette fait déscendre TOUJOURS un peu plus l'animation. Comme si une mémoire de cette rubrique accumulait le déroulement de la molette. Je n'arrive pas à comprendre pourquoi.

Pour illustrer, voici le code de la première image du scénario de ma Barre de défilement: ce code permet de faire agir la molette de la souris sur mon slider (petit point situé sur le glissoir et afissant sur les coordonnées Y (verticales) de l'animation a faire dérouler. J'ai tellement galeré pour créer le code de la molette (je susi autodidacte coté AS e flash et il me reste Beaaaaauuuuucoup de boulo!!) je suis un peu déçu de voir ce petit problème... Comme une sorte de cache mémoire qui garde une donnée et qui s'accumule à chaque load (même si entre temps, une autre rubrique est lancée, chacun des rubrique garde en mémoire le "nombre de fois " ou elle a été lancée et cela agit sur la quantité de défilement avec la molette que ce soit vers le haut ou le bas! Argh!

var mouseListener:Object = new Object();
mouseListener.onMouseWheel = function(delta) {
    if (delta>=0){ // ca c'est pour la molette qui roule vers le haut
        slider3._y -=slider3.ScrollOffsetY3; //slider est mon occurence de point (le petit point qui se trouve le long de la barre de défilement) et ScrollOffSetY3 est une valeur constante initiée dans la première image du Slider
        if (slider3._y>slider3.max){ //de même, slider max = variable donnée dans le slider
            slider3._y=slider3.max;
        }
        else
        {
            if (slider3._y<slider3.min){ // même chose pour min
                slider3._y=slider3.min;
            }
        }
   
    window = 0;
    percent = Math.floor((slider3._y-slider3.min)/(slider3.max-slider3.min)*100);
   
    delta = 4250;
    if(delta > 0){
        _parent.Module_Content._y = window-(percent/100)*delta; //modulecontent est l'animation que je fais défiler
        updateAfterEvent();
    }}
    if (delta<=0){trace(slider3.ScrollOffsetY3); // même code ou presque pour la roulette qui va rouler vers le bas...
   
    slider3._y +=slider3.ScrollOffsetY3;
        trace("slider32 "+slider3._y);
        if (slider3._y>slider3.max){
            slider3._y=slider3.max;
        }
        else
        {
            if (slider3._y<slider3.min){
                slider3._y=slider3.min;
            }
        }
   
    window = 0;
    percent = Math.floor((slider3._y-slider3.min)/(slider3.max-slider3.min)*100);
   
    delta = 4250;
    trace("delta "+delta);
    if(delta > 0){
        _parent.Module_Content._y = window-(percent/100)*delta;
       
        updateAfterEvent();
    }}
    }
Mouse.addListener(mouseListener);

1 réponse

cs_angela07 Messages postés 8 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 24 octobre 2009
20 oct. 2009 à 21:21
Bonsoir Gloradan !

C'est un peu tard pour répondre, mais au cas où tu n'aurais pas trouvé ...

J'avais exactement le même problème que toi il n'y a pas longtemps, et je suis tombée sur ce post : [url]http://www.flashkod.com/forum/sujet-GROS-SOUCI-AVEC-MOUSELISTENER-ONMOUSEWHEEL_398629.aspx/url, qui a réglé mon souci.

Tente de mettre sur tes boutons :
Mouse.removeListener(le chemin de la rubrique appelée.mouseListener);

Ca devrait fonctionner.

En espérant t'avoir aidé !

Angélique
0
Rejoignez-nous