Closed Mikscho closed 2 years ago
@DieterHolz Ich habe mit folgendem Code getestet: final var button = new SimpleButton(pi4j, 26, Boolean.FALSE);
// Register event handlers to print a message when pressed (onDown) and depressed (onUp) button.onDown(() -> System.out.println("Pressing the button")); button.whilePressed(() -> System.out.println("pressing")); button.onUp(() -> System.out.println("Stopped pressing."));
// Wait for 15 seconds while handling events before exiting System.out.println("Press the button to see it in action!"); for (int i = 0; i < 15; i++){ System.out.println("So many Seconds: " + i); sleep(1000); } //sleep(15000);
// Unregister all event handlers to exit this application in a clean way button.onDown(null); button.onUp(null); button.whilePressed(null);
Der Code funktioniert, auch wenn der Button mehrere Sekunden lang gedrückt ist, so kommen die Meldungen des Main-Threads.
@Mikscho @DieterHolz ist whilepressed überhaupt eine benötigte Funktion? Ein Event Trigger auf einen statischen Zustand?
Ich bin ein wenig verunsichert wie das Ganze zusammenspielt (in meiner Vorstellung dürfte der Beispielcode nicht funktionieren).
Deshalb nur ein paar Gedanken: Wir sind ja im "Arcade-Modus". Hier ist das vorgeschlagene Vorgehen, dass man das Game erst mal auf dem Laptop entwickelt und mit den Keyboard-Tasten spielbar macht. Während eine Keyboard-Taste gedrückt ist, wird der Keyevent periodisch getriggert.
Analog sollte es beim Joystick sein. Idealerweise sollte man die "Trigger-Frequenz" einstellen können (und in etwa so wie die Trigger-Frequenz eines Keyboard-Events)
Bisher hätte ich gedacht, dass dafür eine "whileDone"-Methode nötig ist und diese in einem separaten Thread laufen muss. Aber das ist wohl falsch.
ledbutton to dev-arcade