Bonjour à tous
Voilà je suis confronté à un petit problème que je ne vois comment résoudre
Donc je veux pouvoir déplacer une image avec des KeyListener
Voici un bout de code :
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 public void move() { // Déplacement x += dx; y += dy; // Ne pas dépasser les bords if (x < 1) x = 1; if (y <1 ) y = 1; if (x > 370) x = 370; if (y > 250) y = 250; } public void keyPressed(KeyEvent e) { // Récupération de la touche enfoncée int key = e.getKeyCode(); // Actions switch (key) { case KeyEvent.VK_LEFT : depLeft = true; break; case KeyEvent.VK_RIGHT : depRight = true; System.out.println("right pressed"); break; case KeyEvent.VK_UP : depUp = true; break; case KeyEvent.VK_DOWN : depDown = true; break; } // MAJ update(); } public void keyReleased(KeyEvent e) { // Récupération de la touche relâchée int key = e.getKeyCode(); // Actions & MAJ switch (key) { case KeyEvent.VK_LEFT : depLeft = false; break; case KeyEvent.VK_RIGHT : depRight = false; System.out.println("right released"); break; case KeyEvent.VK_UP : depUp = false; System.out.println("Up released"); break; case KeyEvent.VK_DOWN : depDown = false; break; } // MAJ update();} public void update() { // Initialisation du déplacement à 0 dx = 0; dy = 0; // Déplacement if (depLeft) dx = -speed; if (depRight) dx = speed; if (depDown) dy = speed; if (depUp) dy = -speed; }
J'ai mis des tests d'affichage dans la console pour dentifier le probleme, et le voici :
Si j'appuie sur une touche (par ex RIGHT) puis sur une autre (par ex UP), quand je relache l'une des 2 touches, le code exécute les 2 keyReleased associés au 2 touches.
De plus, un test identique sur KeyPressed m'indique qu'elle est enfoncée tout le temps, mais dès qu'une des touches est relâchée, la ligne "right pressed" n'apparait plus, bref le systeme ne reconnait plus aucune touche enfoncée dès que l'une est relâchée...
J'avoue je bloque un peu
QQ a-t'il une idée du pourquoi du comment ? Peut-on contourner ce problème ?
Merci d'avance
Partager