我目前正尝试在 Slick2d 框架中制作一个小型聊天游戏。该框架有一个名为
isKeyPressed()
还有一长串我可以用来检查的变量。例如:
input.KEY_A
目前我可以注册一封信的唯一方法是拥有这些检查器的完整列表:
if (input.isKeyPressed(input.KEY_A)) {
this.text += "a";
}
if (input.isKeyPressed(input.KEY_B)) {
this.text += "b";
}
if (input.isKeyPressed(input.KEY_C)) {
this.text += "c";
}
有没有更聪明的方法可以做到这一点?
我可以想象我能够以某种方式将 input.KEYS 存储在数组中,但我不确定这是否是正确的方法,甚至不确定如何实现它。
最佳答案
你可以使用 a HashMap存储映射 (!) - 假设 KEY_XX
是整数,例如,它可能看起来像这样:
private static final Map<Integer, String> mapping = new HashMap<Integer, String> () {{
put(input.KEY_A, "a");
put(input.KEY_B, "b");
//etc
}};
for (Map.Entry<Integer, String> entry : mapping.entrySet()) {
if (input.isKeyPressed(entry.getKey()) this.text += entry.getValue();
}
如果 map 始终相同,则可以将其设为静态,这样您只需填充一次。
注意:如果您有 input.getKeyPressed()
方法或类似方法,这可能会更有效。
关于java - 检查数组中的多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13702634/