![]() |
Java KeyTyped Event Problem
Hallo Leute,
habe folgendes Problem: In einem von mir mit Java geschriebenen Spiel soll eine Spielfigur einen Stein wegtreten, wenn sie direkt davor steht. Die Kollisionsabfrage mit Figur und Stein funktioniert einwandfrei, jedoch wird mit Drücken von Space das Wegtreten dauerhaft eingeschaltet. Bedeutet also, dass wenn ich einmal Space drücke und der Stein wegfliegt, ich anschließend zum nächsten Stein gehe und ihn berühre, dieser ebenfalls ohne erneuten Tastendruck wegfliegt. Statt diesem Ein-/Ausschalten der Stein-Aktion hätte ich gerne den Steinflug als einmaliges Event, welches jedes Mal erneut mit Space ausgeführt werden soll wenn der Protagonist vor einem Stein steht. Über Lösungsvorschläge würde ich mich sehr freuen. Danke! |
Ehrlich gesagt frage ich mich wo genau das Problem ist?
Für Tastatureingaben gibt es bei Java Events. Da kannst Du SWT, AWT, Swing etc. benutzen u.v.m. Diese Events werden jedesmal ausgelöst, wenn eine entsprechende Taste gedrückt wird! Also nicht nur einmal! Entweder fehlt bei Dir Verständnis oder es liegt ein Design-/Programmierfehler vor. |
Hast Du vielleicht einfach mal debugged, warum der "Steinwegwurf" überhaupt konstant ausgeführt wird? Das sollte ja eigentlich nur einmal geschehen, wenn Du das Tastaturevent für die Leertaste bekommen hast.
|
Kann es sein, dass du das mit einer boolschen Variable löst, ála
Code:
steinFliegt=true; |
Zitat:
Was aber wenn ein zweiter Stein gekickt wird während ein anderer noch fliegt? Mit Events muss das funktionieren. Daher liegt eher irgendwo ein Programmier- oder Designfehler vor. |
Zitat:
Zitat:
|
Wozu benötigst Du eine globale Variable, wenn die Stein-fliegt-Aktion durch Events ausgelöst wird?
[Space-Taste] > löst [KeyEvent] aus > lässt den Stein fliegen Der Fehler liegt dann eher in Deinem Code bzw. Verständnis. Poste doch Deinen Code... richtig helfen kann man Dir sonst nicht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:18 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.