我无法弄清楚如何让条件起作用。是否有类似Keyboard.isKeyDown(// anykey)的条件?
import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Mouse;
public class InputHandler {
public static boolean currentKeyState, previousKeyState;
public static void update() {
previousKeyState = currentKeyState;
if (//condition for keydown) {
currentKeyState = true;
} else {
currentKeyState = false;
}
}
public static boolean keyReleased() {
if (currentKeyState == true && previousKeyState == false) {
return true;
} else {
return false;
}
}
}
这是我想要完成的C#版本。是否有类似于Java中的Keyboard.GetState()的方法?
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Input;
namespace Game.Controls
{
public class InputHandler
{
public KeyboardState currentKeyState;
public KeyboardState previousKeyState;
public InputHandler()
{
currentKeyState = new KeyboardState();
previousKeyState = new KeyboardState();
}
public void Update()
{
previousKeyState = currentKeyState;
currentKeyState = Keyboard.GetState();
}
public bool IsHeld(Keys key)
{
if (currentKeyState.IsKeyDown(key))
{
return true;
}
else
{
return false;
}
}
public bool IsReleased(Keys key)
{
if (currentKeyState.IsKeyUp(key) && previousKeyState.IsKeyDown(key))
{
return true;
}
else
{
return false;
}
}
public bool IsPressed(Keys key)
{
if (currentKeyState.IsKeyDown(key) && previousKeyState.IsKeyUp(key))
{
return true;
}
else
{
return false;
}
}
}
}
答案 0 :(得分:2)
if (Keyboard.getEventKey() == Keyboard.KEY_A) {
if (Keyboard.getEventKeyState()) {
System.out.println("A Key Pressed");
}
else {
System.out.println("A Key Released");
}
}
您可以参考this document
获取所有输入法。
对于所有支持的密钥,请参阅http://www.lwjgl.org/javadoc/org/lwjgl/input/Keyboard.html
答案 1 :(得分:2)
我发现这是检查事件驱动输入的最简单方法:
while (Keyboard.next()) {
if (Keyboard.getEventKeyState()) {
switch (Keyboard.getEventKey()) {
// case Keyboard.KEY_UP: /** do something here **/ break;
}
}
}
答案 2 :(得分:0)
import org.lwjgl.input.Keyboard;
public class InputHandler {
public static boolean currentKeyState = true, previousKeyState;
public static void update() {
previousKeyState = currentKeyState;
if (Keyboard.getEventKeyState()) {
currentKeyState = true;
} else {
previousKeyState = false;
}
}
public static boolean keyPressed() {
if (currentKeyState == true && previousKeyState == true) {
return true;
} else {
return false;
}
}
}
答案 3 :(得分:-1)
您可以为此
使用java KeyEvent类