Java lwjgl 键盘处理程序
Java lwjgl keyboard handler
我创建了一个 class,它接受 lwjgl 的键盘输入并将其转换为一个字符串列表,其中包含当前按下的所有键。
public class KeyHandler {
ArrayList<String> keysPressed;
public KeyHandler() {
keysPressed = new ArrayList<String>();
}
public void checkKeys() {
while (Keyboard.next()) {
String keystring = Keyboard.getKeyName(Keyboard.getEventKey());
if (!keysPressed.contains(keystring)) {
keysPressed.add(keystring); // key has been pressed
} else {
keysPressed.remove(keystring); // key has been released
}
}
}
public void runKeys() {
if (keysPressed.size() > 0) {
for (String str : keysPressed) {
System.out.println("Key handler got key:" + str);
// run class for key
}
} else {
// no keys have been pressed
}
}
}
我正在想办法,例如,'runKeys' 将 运行 一个 class 同名的 class。
W.java
public class W {
public static void exc() {
player.moveZ(10);
}
}
这样做的原因是为了避免必须 运行 通过 50+ if 语句来检查输入
- 创建
Map<Character, Consumer<Character>>
.
- 为实现
Consumer<Character>
接口的每个角色创建一个class。
- 在地图中存储那些 classes 的对象。
- 使用您检测到的击键字符从地图调用适当的消费者对象。
希望对您有所帮助。
我创建了一个 class,它接受 lwjgl 的键盘输入并将其转换为一个字符串列表,其中包含当前按下的所有键。
public class KeyHandler {
ArrayList<String> keysPressed;
public KeyHandler() {
keysPressed = new ArrayList<String>();
}
public void checkKeys() {
while (Keyboard.next()) {
String keystring = Keyboard.getKeyName(Keyboard.getEventKey());
if (!keysPressed.contains(keystring)) {
keysPressed.add(keystring); // key has been pressed
} else {
keysPressed.remove(keystring); // key has been released
}
}
}
public void runKeys() {
if (keysPressed.size() > 0) {
for (String str : keysPressed) {
System.out.println("Key handler got key:" + str);
// run class for key
}
} else {
// no keys have been pressed
}
}
}
我正在想办法,例如,'runKeys' 将 运行 一个 class 同名的 class。
W.java
public class W {
public static void exc() {
player.moveZ(10);
}
}
这样做的原因是为了避免必须 运行 通过 50+ if 语句来检查输入
- 创建
Map<Character, Consumer<Character>>
. - 为实现
Consumer<Character>
接口的每个角色创建一个class。 - 在地图中存储那些 classes 的对象。
- 使用您检测到的击键字符从地图调用适当的消费者对象。
希望对您有所帮助。