gpt4 book ai didi

java - 关于 Java 中的键绑定(bind)

转载 作者:行者123 更新时间:2023-11-29 07:04:52 24 4
gpt4 key购买 nike

这里的人一直建议我在我的 Java 2D 游戏中使用 Key Bindings 而不是 Key Listener。

所以我学会了它,我想知道我是否正确理解如何使用它。

假设我有一个游戏,有两个游戏,每个玩家可以按 5 个按钮。

玩家 1:

  • UP 箭头 - 向前移动
  • LEFT 箭头 - 改变运动角度
  • RIGHT 箭头 - 改变运动角度
  • SPACE 键 - 发射导弹
  • L 键 - 发射二级导弹

玩家 2:

  • W 键 - 前进
  • A 键 - 改变运动角度
  • D 键 - 改变运动角度
  • CAPS-LOCK 键 - 发射导弹
  • 'Z'键 - 发射二级导弹

如果我希望程序对每个不同的按键做出不同的 react ,那么我必须这样做:(?)

  1. 在内部创建 10 个扩展 AbstractAction 的新嵌套类运行大部分游戏逻辑的类。
  2. 创建一个实例这 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 相应地。

我针对不同的场景使用这两种方式。对于图形,我更喜欢上面的方式。对于菜单之类的东西,我倾向于使用一个单独的类

看看this example

关于java - 关于 Java 中的键绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20883737/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com