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 :
Merci pour votre aide.
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; }*/ }
Partager