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

Interfaces Graphiques en Java Discussion :

[keyAdapter] appui continu immédiat ?


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 66
    Points : 54
    Points
    54
    Par défaut [keyAdapter] appui continu immédiat ?
    Bonjour, je poste ici car je ne vois pas quelle catégorie pourrait y être adaptée.

    Voilà mon soucis, je fais un moteur de jeu en java, et pour déplacer mon personnage j'utilise les touches fléchées du clavier (jusque là tout va bien).

    Le problème est que lorsque j'appuie sur une direction, par exemple la droite, mon personnage fait un pas à droite, une pause, et repart vers la droite en continu.
    A mon avis, lorsque j'appuie sur la touche, il execute l'action, puis il attend de voir si c'est un appui long pour voir s'il doit continuer et ré-exécuter l'action.
    Seulement dans mon cas, cela nuit beaucoup à la jouabilité et à l'ergonomie du moteur.

    Ce que je voudrais, c'est que lorsque j'appuie sur une touche il execute le code en continu directement.

    J'ai essayé avec un keyListener et un KeyAdapter mais c'est la même chose à chaque fois.

    Merci d'avance pour tout éclaircissement

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Points : 675
    Points
    675
    Par défaut
    En général, les touches du clavier sont a repetition. Ce qui veut dire que tu vas recevoir une fois l'event KEY_PRESS (la premiere fois que tu appuies sur la touche), puis une serie de KEY_PRESS a interval regulier, et enfin un KEY_RELEASE (lorsque tu relaches la touche).
    Donc, si ton moteur execute une action sur le KEY_PRESS, il va le faire à interval régulier, jusqu'à relachement de la touche.
    Une solution consiste à utiliser plutot l'état d'une touche (genre DOWN et UP), que tu mets à jour au moment des KEY_PRESS et KEY_RELEASE.

  3. #3
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Il y avait eu un sujet du même ordre il y a qq mois, mais je ne le retrouve pas. En effet, c'est un problème d'auto-repeat.
    Je ne sais plus quelle solution avait été adoptée.
    Peut-être démarrer un timer lors du premier événement keyPressed sur une touche donnée et exécuter ainsi périodiquement l'action voulue jusqu'à l'événement keyReleased associée à la même touche.

  4. #4
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 66
    Points : 54
    Points
    54
    Par défaut
    Sanguko > en effet, et c'est déjà ce que j'ai fait, j'ai mis des booléens qui mémorisent l'état d'une touche, j'avais fait ça pour permettre la combinaison de touches. Seulement, les modifications effectuées sont toujours dans mon keyListener(ou Adapter), donc toujours ce problème de fréquences.

    herve91 > ça pourrait être interressant, comment pourrais-je faire un timer ?

  5. #5
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 66
    Points : 54
    Points
    54
    Par défaut
    En faisant une recherche, j'ai trouvé ça sur le forum :
    http://www.developpez.net/forums/sho...9tition+touche

    Du coup, ça m'a mis sur la bonne voie.
    J'ai fait un Thread qui analyse des booléens modifiés par le KeyListener
    Du coup, ça marche nickel.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/03/2014, 00h43
  2. Appui de son patron pour formation continue
    Par maxime612001 dans le forum Etudes
    Réponses: 1
    Dernier message: 17/06/2009, 09h38
  3. Gérer l'appui continu sur une touche
    Par Greensource dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 29/10/2008, 10h45
  4. Attendre l'appui d'une touche pour continuer le programma
    Par Kcyril dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 05/04/2007, 15h11
  5. [langage] Continuer a parser une ligne
    Par D[r]eadLock dans le forum Langage
    Réponses: 5
    Dernier message: 30/09/2002, 18h49

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