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 :

Probleme multiple keylistener


Sujet :

JavaFX

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 3
    Par défaut Probleme multiple keylistener
    Bonjour,
    Je travaille actuellement sur un projet de jeu de plateforme en javafx. Je dois m'occuper des déplacements du héros mais j'ai un problème. Quand je saute en avançant je souhaiterais qu'une fois le saut fini il continue d'avancer sans avoir à ré appuyer sur la touche avancer.
    Pour le moment je teste simplement avec un cercle que je redessine pour les mouvement, plus tard se sera autre chose.
    Voilà ce que j'ai fait :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    package jeu;
     
    import javafx.beans.binding.BooleanBinding;
    import javafx.beans.property.BooleanProperty;
    import javafx.beans.property.SimpleBooleanProperty;
    import javafx.event.EventHandler;
    import javafx.scene.Group;
    import javafx.scene.Parent;
    import javafx.scene.effect.Light;
    import javafx.scene.effect.Lighting;
    import javafx.scene.input.KeyCode;
    import javafx.scene.input.KeyEvent;
    import javafx.scene.paint.Color;
    import javafx.scene.shape.Circle;
     
    public class Heros extends Parent {
     
        public static Circle c;
        private int dx;
        private int dy;
        private int x;
        private int y;
        //private Image image;
        private Touche[] touches;
        /*KeyCode ta=touches[0].getKey();
         KeyCode tr=touches[0].getKey();
         KeyCode ts=touches[0].getKey();*/
        public boolean spacePressed = false;
        public boolean rightPressed = false;
        public boolean leftPressed = false;
     
        public Heros(Group root) {
     
            x = 300;
            y = 200;
     
            /*ImageIcon ii = new ImageIcon(this.getClass().getResource(craft));
             image = ii.getImage();*/
            /*while (Clavier.fin_config == false) {
     
            }*/
            c = new Circle();                                                       // Création d'un cercle
            c.setCenterX(x);                                                        // réglage de la position en X
            c.setCenterY(y);                                                        // réglage de la position en Y
            c.setRadius(20);                                                        // réglage de la taille
            c.setFill(Color.RED);                                                   // Colore l'interieur en Rouge
            c.setStroke(Color.RED);                                                 // réglage de la couleur de la bordure 
            c.setStrokeWidth(3);                                                    // réglage de l'epaisseur de la bordure 
            root.getChildren().add(c);                                              // ajoute le cercle au groupe
     
            final Light.Distant light = new Light.Distant();                        // Création d'un effet de lumiere
            light.setAzimuth(-135.0);
            final Lighting lighting = new Lighting();
            lighting.setLight(light);
            lighting.setSurfaceScale(9.0);
     
            c.setFocusTraversable(true);
            c.setOnKeyPressed(new EventHandler<KeyEvent>() {
     
                @Override
                public void handle(KeyEvent e) {
     
                    KeyCode key = e.getCode();
     
                    if (key == KeyCode.RIGHT) {
                        rightPressed = true;
                    }
     
                    if (key == KeyCode.LEFT) {
                        leftPressed = true;
                    }
     
                    if (key == KeyCode.SPACE) {
                        spacePressed = true;
                    }
     
                    if (rightPressed == true && spacePressed == true) {
                        y = y - 10;
                        c.setCenterY(y);
                        x = x + 5;
                        c.setCenterX(x);
                    } else if (rightPressed == true) {
                        x = x + 2;
                        c.setCenterX(x);
                    }
     
                    if (leftPressed == true && spacePressed == true) {
                        y = y - 10;
                        c.setCenterY(y);
                        x = x - 5;
                        c.setCenterX(x);
                    } else if (leftPressed == true) {
                        x = x - 5;
                        c.setCenterX(x);
     
                    }
     
                    if (spacePressed == true) {
                        y = y - 10;
                        c.setCenterY(y);
                    }
                }
            });
     
            c.setOnKeyReleased(new EventHandler<KeyEvent>() {
     
                @Override
                public void handle(KeyEvent e) {
                    KeyCode key = e.getCode();
     
                    if (key == KeyCode.RIGHT) {
                        rightPressed = false;
                    }
     
                    if (key == KeyCode.LEFT) {
                        leftPressed = false;
                    }
     
                    if (key == KeyCode.SPACE) {
                        spacePressed = false;
                    }
                }
            });
        }
     
        public int getX() {
            return x;
        }
     
        public int getY() {
            return y;
        }
     
        /* public Image getImage() {
         return image;
         }*/
    }
    Merci pour votre aide.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [Math]problème multiplication double
    Par xso dans le forum Général Java
    Réponses: 29
    Dernier message: 04/12/2010, 15h04
  2. Probleme de KeyListener
    Par AfRo69 dans le forum Applets
    Réponses: 1
    Dernier message: 08/06/2007, 07h51
  3. Probleme de KeyListener
    Par Seb33300 dans le forum Interfaces Graphiques en Java
    Réponses: 11
    Dernier message: 05/02/2007, 12h48
  4. Problemes multiples avec "case à cocher"
    Par guidzit dans le forum Access
    Réponses: 13
    Dernier message: 21/09/2006, 14h46
  5. [Listener]probleme de KeyListener
    Par ehmppowa dans le forum Composants
    Réponses: 2
    Dernier message: 28/11/2005, 09h12

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