IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques & Frameworks Discussion :

PeriodicalExecuter et arrêt [Prototype]


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 60
    Points : 71
    Points
    71
    Par défaut PeriodicalExecuter et arrêt
    Bonjour,

    J'essaie de faire un cycle slider avec prototype (des panneaux qui défilent à droite et à gauche quand on survole flèche de droite et de gauche).

    voici la partie du code qui bloque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    startCycle: function(direction){
             if (direction == 'left') movement = this.moveLeft.bind(this);
             else movement = this.moveRight.bind(this);
     
             var periode = new PeriodicalExecuter(function() {
                // lancement du slider
                movement();
     
               // placement des observers
                prevCnt = 0;
                nextCnt = 0;
                $('marques_prev_btn').observe('mouseout', (function(event) {event.stop();prevCnt++; console.log(prevCnt); this.stop();}).bindAsEventListener(this));
                $('marques_next_btn').observe('mouseout', (function(event) {event.stop();nextCnt++; console.log(nextCnt); this.stop();}).bindAsEventListener(this));
            }, 0.2);
        }
    plus haut j'ai une fonction avec un observer en mouseover pour lancer ce script.

    l'ensemble marche assez bien, seulement c'est à l'arrêt du script que ca coince. le console.log n'est pas exécuté une fois, mais n fois, et il s'exécute de plus en plus à chaque essai (la première passe s'arrête vers 7, la seconde à 12, etc...).

    J'en déduis que mon event.stop ne fonctionne pas correctement, mais je ne vois pas trop pourquoi, ou alors quel code je pourrais utiliser pour faire autrement.

    merci de votre aide,

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 60
    Points : 71
    Points
    71
    Par défaut modif
    Bon, petite correction dans mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     startCycle: function(direction){
             if (direction == 'left') movement = this.moveLeft.bind(this);
             else movement = this.moveRight.bind(this);
     
            prevCnt = 0;
            nextCnt = 0;
     
             var periode = new PeriodicalExecuter(function() {
                // lancement du slider
                movement();
            }, 0.2);
     
            // placement des observers
            $('marques_prev_btn').observe('mouseout', (function(event) {event.stop();prevCnt++; console.log(prevCnt); periode.stop();}));
            $('marques_next_btn').observe('mouseout', (function(event) {event.stop();nextCnt++; console.log(nextCnt); periode.stop();}));
     
        }
    maintenant que l'observer n'est plus dans le periodicalExecuter, la première fois ca marche bien (il n'exécute qu'une fois le console.log). par contre, les fois suivantes, il exécute le console.log 2 fois, puis 3, puis 4...
    Je ne comprends pas d'ou ca peut venir.

  3. #3
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    Citation Envoyé par tnntwister Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     startCycle: function(direction){
           // ...
           $('marques_prev_btn').observe('mouseout', (function(event) {event.stop();prevCnt++; console.log(prevCnt); periode.stop();}));
            $('marques_next_btn').observe('mouseout', (function(event) {event.stop();nextCnt++; console.log(nextCnt); periode.stop();}));
     
        }
    ...
    fois suivantes, il exécute le console.log 2 fois, puis 3, puis 4...
    Je ne comprends pas d'ou ca peut venir.
    Chaque fois que tu appelles statCycle, tu attaches un nouveau listener sur le mouseout.

    essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     startCycle: function(direction){
           // ...
           $('marques_prev_btn').stopObserving('mouseout');
           $('marques_prev_btn').observe('mouseout', (function(event) {event.stop();prevCnt++; console.log(prevCnt); periode.stop();}));
           $('marques_next_btn').stopObserving('mouseout');
            $('marques_next_btn').observe('mouseout', (function(event) {event.stop();nextCnt++; console.log(nextCnt); periode.stop();}));
     
        }

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 60
    Points : 71
    Points
    71
    Par défaut
    merci merci merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pas d'événement OnClose quand on arrête W2K
    Par Altau dans le forum C++Builder
    Réponses: 9
    Dernier message: 26/01/2009, 18h36
  2. [FLASH MX2004] Clip qui ne s'arrête pas
    Par romain starck dans le forum ActionScript 1 & ActionScript 2
    Réponses: 8
    Dernier message: 10/05/2006, 19h43
  3. Arrêt de l'exécution d'une requête MySQL dans DELPHI.
    Par joelmarc dans le forum Bases de données
    Réponses: 9
    Dernier message: 11/10/2004, 16h11
  4. [MFC] Attendre l'arrêt d'un processus !!
    Par Djoz dans le forum MFC
    Réponses: 6
    Dernier message: 29/07/2003, 12h03
  5. Détecter l'arrêt du système ?
    Par Jéremy A dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 24/03/2003, 19h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo