[JAVA] Gleichzeitiger Tastendruck in der Verarbeitung

** Einführung **

Für super Anfänger. Sie können es auch lange gedrückt halten.

** Wie macht man **

Die Funktion keyPressed / keyReleased bestimmt, ob jede Taste gedrückt oder losgelassen wird.

//Speichert den Eingabestatus jeder Taste
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;
}

Damit kann eine gleichzeitige Druck- / Langdruckbearbeitung durchgeführt werden. später

python


  if (right) {
    /*Verarbeitung bei gedrückter rechter Taste*/
  }
  if (left) {
    /*Verarbeitung bei gedrückter linker Taste*/
  }
  if (down) {
    /*Verarbeitung beim Drücken der Abwärtstaste*/
  }
  if (up) {
    /*Verarbeitung beim Drücken der Aufwärts-Taste*/
  }

Sie können die Verarbeitung für jeden Schlüssel wie folgt aufteilen.

Dies ist jedoch nicht sehr klug. Lassen Sie uns den Eingabestatus gemeinsam mit HashMap verwalten.

python


// keyCode(int type)Und sein Eingangszustand(Boolescher Typ)Geschäft
HashMap<Integer, Boolean> key = new HashMap<Integer, Boolean>();

void keyPressed() {
  key.put(keyCode, true);
}

void keyReleased() {
  key.put(keyCode, false);
}

Erstellen Sie außerdem eine KeyState-Klasse, die den Eingabestatus verwaltet.

KeyState.pde


static class KeyState {
  static HashMap<Integer, Boolean> key;
  
  //Initialisierung des Eingangszustands
  static void initialize() {
    key = new HashMap<Integer, Boolean>();

    key.put(RIGHT, false);
    key.put(LEFT,  false);
    key.put(UP,    false);
    key.put(DOWN,  false);
  }
  
  //Empfängt und aktualisiert keyCode und seinen Eingabestatus
  static void putState(int code, boolean state) {
    key.put(code, state);
  }
  
  //Empfängt keyCode und gibt seinen Eingabestatus zurück
  static boolean getState(int code) {
    return key.get(code);
  }
}

Wenn Sie den Eingabestatus erhalten, sieht es so aus

main.pde


void setup() {
  KeyState.initialize();
}

void draw() {
  if (keyState.getState(RIGHT)) {
    /*Verarbeitung bei gedrückter rechter Taste*/
  }
  if (keyState.getState(LEFT)) {
    /*Verarbeitung bei gedrückter linker Taste*/
  }
  if (keyState.getState(DOWN)) {
    /*Verarbeitung beim Drücken der Abwärtstaste*/
  }
  if (keyState.getState(UP)) {
    /*Verarbeitung beim Drücken der Aufwärts-Taste*/
  }
}

void keyPressed() {
  KeyState.putState(keyCode, true);
}

void keyReleased() {
  KeyState.putState(keyCode, false);
}

Danke für Ihre Unterstützung.

abschließend

Die Richtungstaste ist ** keyCode (int type) **, aber Tab und Enter werden in ** key (char type) ** gespeichert, sodass ein anderes Gerät erforderlich ist.

Recommended Posts

Gleichzeitiger Tastendruck in der Verarbeitung
Verwenden Sie MouseListener für die Verarbeitung
Schreibverarbeitung in IntelliJ IDEA
Gemessene Parallelverarbeitung mit Java
Mazume Urteilsverarbeitung in der Fischerei
Versuchen Sie, die asynchrone Verarbeitung in Azure zu implementieren
Datumsverarbeitung in Java (LocalDate: Initialisierung)
Implementierung der asynchronen Verarbeitung in Tomcat
Self-Pipe-Technik, die bei der IO.select-Verarbeitung nützlich ist
Die Ereignisverarbeitung wird im Frühjahr durchgeführt.
Informationen zur Dateikopierverarbeitung in Java