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

JavaFX Discussion :

setOnKeyPressed multiple touches


Sujet :

JavaFX

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2016
    Messages : 20
    Points : 12
    Points
    12
    Par défaut setOnKeyPressed multiple touches
    Bonjour,
    Je cherche comment faire pour permettre d'appuyer sur plusieurs touches en même temps avec setOnKeyPressed() en JavaFX.
    Doit on utiliser des piles ?
    Ce que je veux c'est que quand on appui sur plusieurs touches, lorsque le programme se rend dans la partie du code qui gère leurs actions, il les exécute 1 par 1
    Jusqu'ici par exemple on obtient(en pressant une touche puis une autre) : UP UP UP UP LEFT LEFT LEFT LEFT
    Je voudrais : UP UP UP LEFT UP LEFT UP LEFT...

    J'ai trouvé 1 solution avec un HashSet:
    setOnKeyPressed() -> Ajout du code de la touche au HashSet + fonction()
    setOnKeyReleases() -> Retrait du code + fonction()
    fonction() -> if(hashSet.contains(CodeDeLaTouche)){action} pour chaque touche utilisée

    Ca ne fonctionne qu'a moitié: si on relâche 1 des 2 touches, on ne peut pas relâcher la 2eme pressée,...

    Donc voilà si qq à une solution,...

    Merci d'avance

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2016
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Re !
    J'ai trouvé ce code et il fonctionne à merveille:

    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
    final Set<KeyCode> activeKeys = EnumSet.noneOf(KeyCode.class);
    final AnimationTimer updater = new AnimationTimer() {
     
        @Override
        public void handle(long now) {
            // print all pressed keys
            for (KeyCode code : activeKeys) {
                System.out.println(code);
            }
        }
    };
     
    scene.setOnKeyPressed(evt -> {
        boolean wasEmpty = activeKeys.isEmpty();
        if (activeKeys.add(evt.getCode()) && wasEmpty) {
            updater.start();
        }
    });
     
    scene.setOnKeyReleased(evt -> {
        if (activeKeys.remove(evt.getCode()) && activeKeys.isEmpty()) {
            updater.stop();
        }
    });

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

Discussions similaires

  1. "Touch" multiples sur un écran
    Par shadrak dans le forum Android
    Réponses: 1
    Dernier message: 13/01/2014, 10h44
  2. Réponses: 87
    Dernier message: 06/07/2011, 15h33
  3. Réponses: 1
    Dernier message: 02/09/2009, 14h37
  4. Shortcut avec plusieurs touches
    Par scorpiwolf dans le forum C++Builder
    Réponses: 4
    Dernier message: 06/07/2002, 15h57
  5. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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