KeyListener 与按键绑定

2024-03-31

这里的人一直建议我使用键绑定而不是KeyListener在 Java 2D 游戏中。

每一种的优点和缺点是什么?键绑定真的更适合 2D 游戏吗?


KeyListener是一个低得多的级别 API,它要求它注册的组件具有焦点并具有键盘焦点。例如,当您的游戏中有其他组件可能会夺取键盘焦点时,这可能会导致问题。

KeyListener通常更难以维护、扩展或更改,因为通常所有关键事件都通过单个侦听器进行传递,因此所有游戏​​控件都源自此单个位置。

(现在想象一下您想要添加其他控件,例如按钮甚至操纵杆或控制器进行混合 - 您突然需要考虑任意数量的输入集线器,保持最新并同步:P)

Key Bindings API 旨在提供可重用的Action它可以在 Swing API 的各种不同部分中使用,虽然这使得桌面应用程序开发变得更加容易,但也可以使开发游戏变得更加容易......

除了您现在可以控制生成事件的焦点级别之外,您还可以灵活地定义可映射到不同操作的可配置键

例如...

您定义一个Up Action,这会让你的角色升级。这与任何事件无关。这意味着,Action不关心它是如何触发的,只关心它被触发时应该做什么。

您现在可以自由定义触发此操作的击键。最重要的是,突然能够为用户提供自定义功能,因此他们可以实际定义他们想要的操作击键 - 例如,无需设计自己的某种键映射系统。

这也意味着您可以使用相同的Action(甚至同一个实例)以各种不同的方式。例如,您可以绑定Action到一个按键并将其添加到按钮,如果您有足够的勇气尝试,甚至可以将其绑定到另一个输入设备(如操纵杆或控制器)......但是您需要自己构建 API 来实现它,但是这意味着您突然对所有用户输入有了一个 API 概念,例如......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

KeyListener 与按键绑定 的相关文章

随机推荐