我用Java做一个基本的小游戏,我想拥有它,这样我可以使用包含HashMap的结合键..如何使用HashMap进行键绑定?
EG-它会像HashMap的 ,然后我会做: hashmap.add (Keys.up,VK_UP);
但这是我遇到我的问题,我如何访问hashmap,并选择KeyListener返回按键时按哪些键?
很抱歉,如果这个问题似乎令人费解,但我真的很困惑太..
我用Java做一个基本的小游戏,我想拥有它,这样我可以使用包含HashMap的结合键..如何使用HashMap进行键绑定?
EG-它会像HashMap的 ,然后我会做: hashmap.add (Keys.up,VK_UP);
但这是我遇到我的问题,我如何访问hashmap,并选择KeyListener返回按键时按哪些键?
很抱歉,如果这个问题似乎令人费解,但我真的很困惑太..
您插入键和值使用map.put(key,value)
和HashMap中检索使用map.get(key)
你需要基于一个键的值确保该类的键会覆盖hashCode()
和equals()
[对于库班 - 这已经是]
由于所有主要类型为KeyEvent的是int类型的使用下面的散列映射:
HashMap<Integer, Boolean> keysState = new HashMap<Integer, Boolean>();
.
.
.
public void keyPressed(KeyEvent e) {
keysState.put(e.getKeyCode(), true);
}
public void keyReleased(KeyEvent e) {
keysState.put(e.getKeyCode(), false);
}
现在如果一个键被按下由你可以测试:
if (keysState.get(KeyEvent.VK_UP)) {
// Up key is pressed so do the desired action
}
由于get方法返回的值为空值,因此如果该键未完全被按下,将会抛出运行时异常。为了这个工作,需要使用指向“false”值的所有可能的键来初始化HashMap。 – 2012-03-25 12:50:11
@Alonso是对的。确保地图使用适当的键码进行初始化(所有值都为false) – giorashc 2012-03-25 13:28:20
你要得到相应的HashMap中的关键价值?你能给出一个样本输入/输出吗? – 2012-03-25 12:16:19