2017-01-09 2 views
0

J'essaye actuellement de faire un jeu vraiment simple comme une expérience de ce qui peut être fait avec JavaFX, et j'ai un petit rectangle qui représente une personne. Le rectangle est placé dans un volet, et j'essaie de trouver la meilleure façon de faire en sorte que les touches fléchées le font bouger de 5 px vers la gauche. Le code ci-dessous est ce que j'essaie. Si vous savez comment faire fonctionner ce code ou si vous avez un meilleur code, je vous serais très reconnaissant.JavaFx KeyEvent ne bougera pas l'objet

scene.setOnKeyPressed(new EventHandler<KeyEvent>() { 
     @Override 
     public void handle(KeyEvent ke) { 
      if(ke.equals(KeyCode.KP_LEFT)) { 
       int xLoc = (int)avatar.getX(); 
       int newX = xLoc - 5; 
       int yLoc = (int)avatar.getY(); 
       avatar.relocate(newX, yLoc); 
      } 
     } 
    }); 

Merci!

Répondre

2

Le KeyEvent n'est pas le code, vous avez besoin de getCode().

if (ke.getCode().equals(KeyCode.KP_LEFT)) 
+1

De plus, puisque 'KP_LEFT' est une constante enum,' == 'suffit pour comparer les valeurs. – fabian

+0

Merci pour votre aide. Cependant, le personnage ne bougera pas. Des idées? –

+0

@PorterFarley À ce stade, il est difficile de déduire davantage sans fournir plus de codes. Nous avons besoin de savoir ce qu'est 'avatar' et comment il est déclaré/défini. Nous devons absolument savoir ce que fait la méthode 'relocate()'. En outre, placer un point d'arrêt tout en exécutant le débogage vous aidera à déboguer cela aussi; est-ce que 'avatar.relocate()' est même exécuté à l'exécution? – Jai