handleInput

hamster1989

Mitglied
Hi,

ich verstehe das folgende Stück Code nicht...wie funktioniert Keyboard.getEventKeyState()??


und wieso wird hier zwischen den gleichen Tasten unterschieden?

Kann mir jemand den Sinn hinter dem folgendem Codeblock erklären?
Java:
   while(Keyboard.next()) {
            if(Keyboard.getEventKeyState()) {
                switch(Keyboard.getEventKey()) {
                    case Keyboard.KEY_W: moveDir.z += 1.0f; break;
                    case Keyboard.KEY_S: moveDir.z -= 1.0f; break;
                    case Keyboard.KEY_A: moveDir.x += 1.0f; break;
                    case Keyboard.KEY_D: moveDir.x -= 1.0f; break;
                    case Keyboard.KEY_SPACE: moveDir.y += 1.0f; break;
                    case Keyboard.KEY_C: moveDir.y -= 1.0f; break;
                }
            } else {
                switch(Keyboard.getEventKey()) {
                    case Keyboard.KEY_W: moveDir.z -= 1.0f; break;
                    case Keyboard.KEY_S: moveDir.z += 1.0f; break;
                    case Keyboard.KEY_A: moveDir.x -= 1.0f; break;
                    case Keyboard.KEY_D: moveDir.x += 1.0f; break;
                    case Keyboard.KEY_SPACE: moveDir.y -= 1.0f; break;
                    case Keyboard.KEY_C: moveDir.y += 1.0f; break;
                    case Keyboard.KEY_F1: cam.changeProjection(); break;
                    case Keyboard.KEY_F2: glPolygonMode(GL_FRONT_AND_BACK, (wireframe ^= true) ? GL_FILL : GL_LINE); break;
                    case Keyboard.KEY_F3: if(culling ^= true) glEnable(GL_CULL_FACE); else glDisable(GL_CULL_FACE); break;
                }
            }
        }



danke für jede Hilfe


mit freundlichem Gruß
 
F

Firephoenix

Gast
Keyboard als Klasse sagt mir nichts, daher reine vermutungen:
Java:
while(Keyboard.next())
Solange events von dem Keyboard kommen

Java:
if(Keyboard.getEventKeyState())
Wenn die Taste gedrückt wurde:

Java:
case Keyboard.KEY_W: moveDir.z += 1.0f; break;
und es die W-Taste war: moveDir.z um 1 erhöhen

Java:
} else {
wenn die Taste losgelassen wurde:

Java:
case Keyboard.KEY_W: moveDir.z -= 1.0f; break;
und es die W-Taste war: movDir.z um 1 erniedrigen.

oder anders:
solange w gedrückt ist ist movDir.z = 1, ansonsten 0.

Gruß
 
S

SlaterB

Gast
oder auch:
das if/else ist entweder einer unterschiedlichen Darstellung/ Ausrichtung/ Berechnungsweise geschuldet ("changeProjection")
oder kehrt einfach frech die Steuerung um, vielleicht als Strafe ;)

der Code ist einfach nur Code, warum das kann man daraus nicht ablesen
 

Neue Themen


Oben