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

JavaScript Discussion :

Action selon un déplacement de la souris sur l'axe horizontal ou vertical


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2008
    Messages : 121
    Points : 65
    Points
    65
    Par défaut Action selon un déplacement de la souris sur l'axe horizontal ou vertical
    Salut,
    J'essaye de déclencher une action selon que l'utilisateur déplace sa souris sur l'axe horizontal ou vertical. Après maintes recherches et essais, j'obtiens rien de concluant. J'arrive bien à détecter les coordonnées X et Y,mais impossible d'assigner une action différente à chacune.

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    var timeout ;
    var posX ;
    var posY ;
     
    document.onmousemove = function(event){
     
    	posX = event.clientX ;
    	posY = event.clientY ;
     
    	var posXX = "" ;
    	var posYY = "" ;
     
    	if (posXX != posX) {
    		document.getElementById("ledgreenMSX").className = 'led ledgreen';
    		posXX=posX;
    		}
    		else if (posYY != posY) {
    		document.getElementById("ledgreenMSY").className = 'led ledgreen';
    		posYY=posY;
    		}
     
    	clearTimeout(timeout);
    	timeout = setTimeout("checkMouse('off')", 11);
    	}
     
    function checkMouse(input) {
    	if (input=='off') {
    		document.getElementById("ledgreenMSX").className = 'led ledblack';
    		document.getElementById("ledgreenMSY").className = 'led ledblack';
     
    		}
    	}
    L'action en question est d'allumer une led correspondant à chacun des axes.
    Merci pour votre aide.

  2. #2
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    Bonsoir, pourquoi ne pas utiliser un timer ou tu récupères les coordonnées au début et après et tu regarde si c'est les coordonnées x ou y qui ont étaient modifié es-tu effectue ton action en conséquence sinon il-y a aussi MouseEvent.movement .

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2008
    Messages : 121
    Points : 65
    Points
    65
    Par défaut
    Non, décidément je n'y arrive toujours pas !
    C'est pas le problème du timeout (ça, je l'avais déjà mis en place) ; mais dans mon code, ça zappe les mouvement horizontaux pour continuer et rester QUE sur les verticaux

    J'ai sans doute écrit quelque-chose qui va pas, mais quoi...

  4. #4
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    En regardant ton code avec ces variables posX et posXX je devine que tu as essayé de stocker la précédente coordonnée. Pour que ça marche il faut changer la valeur après le if. Dans le code que je vais te donner, j'ai changé les noms de tes variables pour être plus clair.

    Je pense que tu devrais retirer ton else. En effet, il est très rare que seul X ou seul Y change lors d'un mouvement de souris, en général les deux changent en même temps, même s'il n'y a qu'un ou deux pixels de différence. Du coup il vaut mieux tester les deux dans la même occurence de mousemove.

    À propos du timeout, je pense que tu n'en as pas besoin et que tu peux appeler checkMouse directement.
    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
    18
    19
    20
    var posXPrecedent;
    var posYPrecedent;
     
    document.onmousemove = function(event) {
     
    	var posX = event.clientX;
    	var posY = event.clientY;
     
    	if (posX != posXPrecedent) {
    		document.getElementById("ledgreenMSX").className = "led ledgreen";
    	}
    	if (posY != posYPrecedent) {
    		document.getElementById("ledgreenMSY").className = "led ledgreen";
    	}
     
    	posXPrecedent = posX;
    	posYPrecedent = posY;
     
    	checkMouse("off");
    };
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2008
    Messages : 121
    Points : 65
    Points
    65
    Par défaut
    Effectivement, c'était là mon erreur : c'est après le if qu'il faut mettre l'ancienne valeur dans la nouvelle.
    Question de logique

    Merci à toi Watilin !

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

Discussions similaires

  1. accorder une action lors du passage de la souris sur une zone de l'image
    Par kawther dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 29/09/2010, 20h19
  2. Déplacer JPanel selon déplacement de la souris
    Par Atharendil dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 27/12/2008, 17h30
  3. Event sur le déplacement de la souris dans un canvas
    Par Stéphane Nadry dans le forum Tkinter
    Réponses: 2
    Dernier message: 27/10/2008, 13h37
  4. Actions souris sur tableau Flex de ActiveX
    Par zeus7857 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 13/08/2008, 14h42
  5. Action selon positionnement souris
    Par TheBananier dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 26/10/2007, 10h24

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