# handleInput



## hamster1989 (21. Jun 2012)

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?

```
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ß


----------



## Firephoenix (21. Jun 2012)

Keyboard als Klasse sagt mir nichts, daher reine vermutungen:

```
while(Keyboard.next())
```
Solange events von dem Keyboard kommen


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


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


```
} else {
```
wenn die Taste losgelassen wurde:


```
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ß


----------



## SlaterB (21. Jun 2012)

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


----------

