Re-salutations à tous,
Lors de mes problèmes d'animations, je les ai résolus en créant un boucle dans laquelle j'ai mis deux méthodes, update et render, update s'occupait de mettre à jour les coordonnées et render de l'affichage. Tout se passait très bien le problème était réglait.
J'ai donc commencé à ajouter des boutons, mais lors de l'ajout du premier bouton, surprise: Il n'est plus possible de bouger le personnage. Après plusieurs tests, j'avais pensé que le problème venait du fait que les conditions contenant l'incrémentation de la position de mon personnage n'étaient plus lues, c'était en partie vrai, le fait est que la classe dans laquelle j'ai implémenté KeyListener n'était plus du tout lu, et ce, juste en cliquant sur le bouton! C'est vraiment un mystère! C'est la première fois que je n'ai plus aucune piste à suivre, c'est pourquoi, après maintes efforts et maintes recherches, je suscite votre aide et votre expérience!
Voici les données essentielles:
La classe bouton a été en quelque sorte personnalisée, comme ci-contre:
La classe KeyListener est assez simple:
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 package rpg1.FortoChronicle.r1; import java.awt.Graphics; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; public class Bouton extends JButton { //private ImageIcon bouton; private String link; private int x, y; public Bouton(String link, int x, int y) { this.link = link; this.x = x; this.y = y; Icon icone=new ImageIcon(link); this.setIcon(icone); } }
Là où est contrôlé mon personnage au cas où:
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 package rpg1.FortoChronicle.r1; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; public class KeyBoardControl implements KeyListener { public static boolean up = false; public static boolean down = false; public static boolean left = false; public static boolean right = false; public static boolean espace = false; public KeyBoardControl() { } public void keyPressed(KeyEvent e) { if(e.getKeyCode() == 38) { up = true; } if(e.getKeyCode() == 40) { down = true; } if(e.getKeyCode() == 37) { left = true; } if(e.getKeyCode() == 39) { right = true; } if(e.getKeyCode() == 32) { espace = true; } } public void keyReleased(KeyEvent e) { if(e.getKeyCode() == 38) { up = false; } if(e.getKeyCode() == 40) { down = false; } if(e.getKeyCode() == 37) { left = false; } if(e.getKeyCode() == 39) { right = false; } if(e.getKeyCode() == 32) { espace = false; } } public void keyTyped(KeyEvent e) { } }
Compte tenu que Player.executMove est toujours vrai pour l'instant, elle n'est pas traité autre part.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 if(KeyBoardControl.up && !Frame.failed && Player.executMove != false) { Player.pY--; Player.move = true; } if(KeyBoardControl.down && !Frame.failed && Player.executMove != false) { Player.pY++; Player.move = true; } if(KeyBoardControl.left && !Frame.failed && Player.executMove != false) { Player.pX--; Player.move = true; } if(KeyBoardControl.right && !Frame.failed && Player.executMove != false) { Player.pX++; Player.move = true; } if(KeyBoardControl.up == false && KeyBoardControl.down == false && KeyBoardControl.left == false && KeyBoardControl.right == false) { Player.move = false; }
Si vous avez besoin d'autres données n'hésitez pas à m'en demander!
Information importante: Ce bug est valable même pour les JButton, donc boutons non modifiés.
Merci beaucoup pour votre aide et votre dévouement!
Partager