KeyListener与键绑定

时间:2014-01-01 21:04:59

标签: java swing awt keylistener key-bindings

此处的人士一直建议我在Java 2D游戏中使用Key Binding而不是KeyListener

每个人的优点和缺点是什么?关键绑定对于2D游戏真的更好吗?

2 个答案:

答案 0 :(得分:8)

KeyListener是一个更低级别的API,它要求注册的组件聚焦并具有键盘焦点。例如,如果您的游戏中有其他组件可能会占用键盘焦点,则可能会出现问题。

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

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

Key Bindings API旨在提供可重复使用的Action,可用于Swing API的各个不同部分,同时使桌面应用程序开发更容易,也可以使其更容易在开发游戏时......

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

例如......

您定义了一个Up Action,可以让您的角色向上移动。这与任何事件都脱节了。这意味着,Action并不关心它是如何被触发的,只关注它被触发时应该做什么。

您现在可以自由定义触发此操作的击键。关于这一点的重要部分突然有能力为用户提供定制,因此他们可以实际定义他们想要的动作的关键笔划 - 例如,无需设计自己的某种键映射系统。 / p>

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

答案 1 :(得分:0)

后来介绍了键绑定。它们将动作映射到特定键,而侦听器只是监听按下哪些键。说实话,你使用哪一个并不重要,但使用键绑定总是更好。

还有许多可用的库,它们各有优缺点。对于2D游戏,键绑定应该没问题。但请注意,建议不要在游戏开发中使用Java API。如果您想要构建3D或内容丰富的2D游戏,那么使用OpenGL会好得多。尝试LWJGL或JOGL(一般是首选LWJGL)或者您可以使用Slick2D或LibGDX等游戏引擎。