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

jQuery Discussion :

Bind deux touches simultanement


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 66
    Par défaut Bind deux touches simultanement
    Bonjour à tous,

    Je recherche un moyen de capter l'appui de deux touches simultanément via la methode keydown() de jQuery.

    J'arrive à bind ctrl + <- avec ce code sans problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $('body').keydown( function(e) {
     
    		console.log('left: '+sprite.offset().left+' top: '+sprite.offset().top);		
     
    		if ( ( (e.keyCode == 37) && (e.ctrlKey) ) || ( (e.keyCode == 81) && (e.keyCode == 90) ) ) {
     
    ...
    La condition dans la première parenthèse bind correctement l'appuie simultané de ctrl et de la flèche de gauche. Mon problème est que je cherche (pour un moteur de jeu) à bind l'appui simultané de la flèche de gauche et de la flèche du haut. Avec ce code par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( ( (e.keyCode == 37) && (e.keyCode == 40) ) || ( (e.keyCode == 81) && (e.keyCode == 90) ) ) {
    Mais évidemment ça ne fonctionne pas... Et j'aimerai bien comprendre pourquoi...

    Merci de votre aide

    Nico

  2. #2
    Membre très actif
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations forums :
    Inscription : Septembre 2008
    Messages : 168
    Par défaut
    fais des conditions imbriquées.
    Soit à combiner les touches de codes respectifs c1 et c2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ((e.keyCode == c1) || ( e.keyCode == c2) ) {
          //if also
                if ( (e.keyCode == c1) ||  (e.keyCode == c2) ){
    //donc les deux touches sont appuyees simultanement
    A toi de voir les codes des touches, j'ai pas fait attention...

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 66
    Par défaut
    Merci de ton aide je test ca tout de suite.

    Bonne journée

  4. #4
    Membre confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 66
    Par défaut
    Merci de ton aide, il me semblais avoir déjà essayé, mais par aquis de conscience je viens de re-tester avec ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $('body').keydown( function(e) {
    		if ( (e.keyCode == 37)  ||  (e.keyCode == 81)  ) {
    			if ( (e.keyCode == 38) || (e.keyCode == 90) ) {
    				alert('diagUpLeft');
    			}
     
    			sprite.left('keydown');	
                            ....
    Et ca ne fonctionne pas. (37 = <- et 81 = 'q') (38 = ^ et 90 = 'z')

    Je cherche une méthode permettant de pouvoir animer un sprite dans un jeu sur 8 axes, je dois donc être en mesure de bind l'appui simultané de deux touches.

    Je pense que c'est ma méthode jQuery keydown() qui me bride... Quelqu'un aurait t'il un exemple à me fournir le cas contraire.

    Merci de votre aide.

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    L'événement keydown se déclenche pour chaque frappe d'une touche du clavier, donc, à mon avis, la bonne méthode est de stoker la frappe précédente si l'on veut examiner des combinaisons de deux touches.

    Code javascript : 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
    <script>
    	$(function(){
    		/*
    			flèche gauche : 37
    			fèche droite : 39
    			flèche haut : 38
    			flèche bas : 40
     
    			CTRL : 17
    			SHIFT : 16
     
    			< : 276
    			> : 226
    		*/
    		var lastWhich = 0;
     
    		$(document).keydown(function(e){
    			if (lastWhich == 17 && e.which == 37){
    				console.log("CTRL plus flèche gauche");
    			} else if (lastWhich == 37 && e.which == 38){
    				console.log("flèche gauche plus flèche haut");
    			} else {
    				console.log(e.which);
    				lastWhich = e.which;
    			}
    		});
    	});
    </script>

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  6. #6
    Membre confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 66
    Par défaut
    Merci infiniment de ton aide danielhagnoul, ca fonctionne à merveille.

    Bonne journée

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

Discussions similaires

  1. [SFML] - Appui sur deux touches simultanément
    Par skysee dans le forum SFML
    Réponses: 1
    Dernier message: 17/09/2008, 09h30
  2. Event deux touches du clavier simultanément
    Par Orbiplanax dans le forum ActionScript 3
    Réponses: 4
    Dernier message: 23/01/2008, 10h36
  3. Evènement : Deux touches appuyées simultanément
    Par Matt112 dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 21/01/2008, 09h19
  4. Appui simultané sur les deux touches SHIFT
    Par dcmo5 dans le forum SDL
    Réponses: 31
    Dernier message: 12/11/2007, 15h32
  5. [KeyEvent] plusieurs touches simultanées enfoncées
    Par gege2mars dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 07/01/2004, 11h44

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