Pour les super débutants. Vous pouvez également le maintenir enfoncé pendant une longue période.
La fonction keyPressed / keyReleased function détermine si chaque touche est enfoncée ou relâchée.
//Stocke l'état d'entrée de chaque clé
boolean right, left, down, up;
void keyPressed() {
if (keyCode == RIGHT) right = true;
if (keyCode == LEFT) left = true;
if (keyCode == DOWN) down = true;
if (keyCode == UP) up = true;
}
void keyReleased() {
if (keyCode == RIGHT) right = false;
if (keyCode == LEFT) left = false;
if (keyCode == DOWN) down = false;
if (keyCode == UP) up = false;
}
Le traitement simultané de pression / pression longue peut être effectué avec juste cela. plus tard
python
if (right) {
/*Traitement lorsque la touche droite est enfoncée*/
}
if (left) {
/*Traitement lorsque la touche gauche est enfoncée*/
}
if (down) {
/*Traitement lorsque la touche bas est enfoncée*/
}
if (up) {
/*Traitement lorsque la touche haut est enfoncée*/
}
Vous pouvez diviser le traitement pour chaque clé comme ceci.
Cependant, ce n'est pas très intelligent, nous allons donc gérer l'état d'entrée collectivement avec HashMap.
python
// keyCode(type int)Et son état d'entrée(type booléen)Boutique
HashMap<Integer, Boolean> key = new HashMap<Integer, Boolean>();
void keyPressed() {
key.put(keyCode, true);
}
void keyReleased() {
key.put(keyCode, false);
}
De plus, créez une classe KeyState qui gère l'état d'entrée.
KeyState.pde
static class KeyState {
static HashMap<Integer, Boolean> key;
//Initialisation de l'état d'entrée
static void initialize() {
key = new HashMap<Integer, Boolean>();
key.put(RIGHT, false);
key.put(LEFT, false);
key.put(UP, false);
key.put(DOWN, false);
}
//Reçoit et met à jour keyCode et son état d'entrée
static void putState(int code, boolean state) {
key.put(code, state);
}
//Reçoit keyCode et renvoie son statut d'entrée
static boolean getState(int code) {
return key.get(code);
}
}
Lors de l'obtention de l'état d'entrée, cela ressemble à ceci
main.pde
void setup() {
KeyState.initialize();
}
void draw() {
if (keyState.getState(RIGHT)) {
/*Traitement lorsque la touche droite est enfoncée*/
}
if (keyState.getState(LEFT)) {
/*Traitement lorsque la touche gauche est enfoncée*/
}
if (keyState.getState(DOWN)) {
/*Traitement lorsque la touche bas est enfoncée*/
}
if (keyState.getState(UP)) {
/*Traitement lorsque la touche haut est enfoncée*/
}
}
void keyPressed() {
KeyState.putState(keyCode, true);
}
void keyReleased() {
KeyState.putState(keyCode, false);
}
Merci pour votre soutien.
La touche de direction est ** keyCode (type int) **, mais Tab et Entrée sont stockées dans ** key (type char) **, donc un autre appareil est requis.
Recommended Posts