这里的人一直建议我在我的 Java 2D 游戏中使用 Key Bindings 而不是 Key Listener。
所以我学会了它,我想知道我是否正确理解如何使用它。
假设我有一个游戏,有两个游戏,每个玩家可以按 5 个按钮。
玩家 1:
- UP 箭头 - 向前移动
- LEFT 箭头 - 改变运动角度
- RIGHT 箭头 - 改变运动角度
- SPACE 键 - 发射导弹
- L 键 - 发射二级导弹
玩家 2:
- W 键 - 前进
- A 键 - 改变运动角度
- D 键 - 改变运动角度
- CAPS-LOCK 键 - 发射导弹
- 'Z'键 - 发射二级导弹
如果我希望程序对每个不同的按键做出不同的 react ,那么我必须这样做:(?)
- 在内部创建 10 个扩展 AbstractAction 的新嵌套类 运行大部分游戏逻辑的类。
- 创建一个实例 这 10 个新类中的每一个,并将每个类绑定(bind)到一个键。
这是正确的吗?只为按下按钮创建 10 个新类真的合乎逻辑吗? 我想知道我是否正确理解如何使用键绑定(bind),以便我可以开始使用它进行编程。
谢谢
最佳答案
"Is this correct? Is it really logical to create 10 new classes only for pushing buttons?"
答案是肯定的。您确实需要创建 10 个不同的实例。这并不难。您可以创建一个帮助程序类,也可以只复制并粘贴类似这样的内容
Action leftAction = new AbstractAction(){
public void actionPerformed(ActionEvent e){
// do something when left button pressed;
}
};
InputMap inputMap = panel.getInputMap(JPanel.WHEN_IN_FOCUSED_WINDOW);
ActionMap actionMap = panel.getActionMap();
inputMap.put(KeyStroke.getKeyStroke("LEFT"), "leftAction");
actionMap.put("leftAction", leftAction); <----
对于每个不同的 Action ,只需复制并粘贴Action
代码,更改变量和要执行的 Action ,然后输入到InputMap
和 ActionMap
相应地。
我针对不同的场景使用这两种方式。对于图形,我更喜欢上面的方式。对于菜单之类的东西,我倾向于使用一个单独的类
关于java - 关于 Java 中的键绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20883737/