Bonsoir.s'il vous plaît j'ai besoin d'aide.voici ci dessous un bout de code.En fait le bout de code présent comme vous
le constater gère le déplacement du sprite.Ce qui se passe c'est que les déplacements à gauche comme à droite sont trop
rapides.Il faut être très délicat avec la souris pour qu'à chaque click le sprite ne se déplace que d'un cercle sinon le
sprite se déplace de 2 voir 3 cercles.Je ne sais donc pas comment faire pour qu'à chaque fois qu'on appuie que ce soit
à gauche ou à droite que le sprite se déplace d'un cercle à chaque fois.J'aimerais savoir ce qu'il faut que j'ajoute pour
que les déplacements soient ordonnés.
Merci de me répondre.Comment utiliser les timers?
public static final int keyDelay = 10;
private boolean[] isDown = {false, false, false, false};
private long[] keyTick = {0, 0, 0, 0};
private int[] keyValue = {GameCanvas.LEFT_PRESSED, GameCanvas.RIGHT_PRESSED, GameCanvas.FIRE_PRESSED, GameCanvas.UP_PRESSED};
private boolean isRunning = true;
public void checkKeys(int iKey, long currTick) {
long elapsedTick = 0;
//loop through the keys
for (int i = 0; i < 4; i++) {
// by default, key not pressed by user
isDown[i] = false;
// is user pressing the key
if ((iKey & keyValue[i]) != 0) {
elapsedTick = currTick - keyTick[i];
//is it time to toggle key state?
if (elapsedTick >= keyDelay) {
// save the current time
keyTick[i] = currTick;
// toggle the state to down or pressed
isDown[i] = true;
}
}
}
}
public void run(){
c1= a+y;//a correspond à la position en x du sprite et y correspond au diamètre de chaque cercle
int iKey = 0;
long lCurrTick = 0;
// current system time in milliseconds;
load();
g = getGraphics();
while (isRunning) {
lCurrTick = System.currentTimeMillis();
iKey = getKeyStates();
checkKeys(iKey, lCurrTick);
if (isDown[fireKey]) {
isRunning = false;
}
// position actuelle du van
int cx = Van.getX();
int cy = Van.getY();
if (((iKey & GameCanvas.LEFT_PRESSED) != 0) & (cx >= c1)) {
Van.setFrame(1);
// déplacer le van vers la gauche
cx -= y;
}
if (((iKey & GameCanvas.RIGHT_PRESSED) != 0) & (cx < c1)) {
Van.setFrame(1);
//déplacer le van vers la droite
cx += y;
}
}
Van.setPosition(cx, cy);