Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
 |
11.01.11, 07:56
|
#1
|
Anfänger
Registriert seit: Oct 2009
Beiträge: 3
Bedankt: 1
|
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!
|
|
|
11.01.11, 11:32
|
#2
|
Banned
Registriert seit: Jan 2011
Beiträge: 16
Bedankt: 12
|
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.
|
|
|
11.01.11, 11:35
|
#3
|
Erfahrener Newbie
Registriert seit: May 2009
Beiträge: 116
Bedankt: 93
|
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.
|
|
|
11.01.11, 20:09
|
#4
|
Anfänger
Registriert seit: Apr 2010
Beiträge: 24
Bedankt: 28
|
Kann es sein, dass du das mit einer boolschen Variable löst, ála
und diese nicht mehr zurücksetzt?
|
|
|
11.01.11, 21:59
|
#5
|
Banned
Registriert seit: Dec 2010
Beiträge: 90
Bedankt: 91
|
Zitat:
Zitat von mande
Kann es sein, dass du das mit einer boolschen Variable löst, ála
und diese nicht mehr zurücksetzt?
|
Das wird nicht funktionieren, denn dann könnte jeweils immer nur ein Stein fliegen.
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.
|
|
|
12.01.11, 08:07
|
#6
|
Anfänger
Registriert seit: Oct 2009
Beiträge: 3
Bedankt: 1
|
Zitat:
Kann es sein, dass du das mit einer boolschen Variable löst, ála
Code:
steinFliegt=true;
und diese nicht mehr zurücksetzt?
|
Richtig. Die Variable bleibt danach wie sie ist. Jedes mal wenn ich zu einem neuen Stein gehe fliegt dieser ohne Tastendruck sofort weg.
Zitat:
Das wird nicht funktionieren, denn dann könnte jeweils immer nur ein Stein fliegen.
Was aber wenn ein zweiter Stein gekickt wird während ein anderer noch fliegt?
|
Es kann durchaus ein zweiter Stein parallel zum ersten fliegen, jedoch wie oben beschrieben ohne erneuten Tastendruck. Du gehst zum ersten Stein - Leertaste - Stein fliegt weg - du gehst zum 2. zum 3. zum 4. Stein und alle fliegen weg.
|
|
|
12.01.11, 15:17
|
#7
|
Banned
Registriert seit: Dec 2010
Beiträge: 90
Bedankt: 91
|
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.
|
|
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:36 Uhr.
().
|