这里的人一直建议我在 Java 2D 游戏中使用键绑定(bind)而不是 KeyListener
。
各自的优缺点是什么? Key Bindings 真的更适合 2D 游戏吗?
最佳答案
KeyListener
是一个低得多的 API,它要求它注册的组件具有焦点并且具有键盘焦点。例如,当您的游戏中有其他组件可能会占用键盘焦点时,这可能会导致问题。
KeyListener
通常更难维护、扩展或更改,因为通常情况下,所有按键事件都通过单个监听器传送,因此所有游戏控件都源自这个位置。
(现在假设您想要添加其他控件,例如按钮甚至操纵杆或 Controller 以进行混合 - 您突然有任意数量的输入集线器需要考虑,保持最新和同步:P)
Key Bindings API 旨在提供可重用的 Action
,可用于 Swing API 的各种不同部分,同时这使得桌面应用程序开发更容易,它还可以使开发游戏更容易...
除了您现在可以控制事件生成的焦点级别之外,您还可以灵活地定义可映射到不同操作的可配置键
例如……
您定义了一个Up
Action
,它将您的角色向上移动。这是脱离任何事件的。这意味着,Action
不关心它是如何触发的,只关心它在触发时应该做什么。
您现在可以自由定义触发此操作的击键。关于这一点的重要部分,突然有能力为用户提供定制,因此他们实际上可以定义他们想要的 Action 的击键 - 例如,无需设计您自己的某种键映射系统。
这也意味着您可以以多种不同的方式使用相同的Action
(甚至是相同的实例)。例如,您可以将 Action
绑定(bind)到击键并将其添加到按钮,如果您有足够的勇气尝试,甚至可以将其绑定(bind)到另一个输入设备(如操纵杆或 Controller )...但是你需要自己构建 API 来实现它,但这意味着你突然有了一个 API 概念来处理所有用户输入,例如......
关于java - KeyListener 与键绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20873255/