繁体   English   中英

KeyListener与键绑定

[英]KeyListener vs. Key Bindings

这里的人们不断向我建议,在Java 2D游戏中使用Key Binding而不是KeyListener

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

KeyListener是一个较低级别的API,它要求注册它的组件必须具有焦点并具有键盘焦点。 例如,当您的游戏中有其他可能吸引键盘焦点的组件时,这可能会引起问题。

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

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

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

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

例如...

您定义一个Up Action ,它将使您的角色向上移动。 这与任何事件都没有关系。 这意味着,该Action并不关心它是如何触发的,只关心它在触发时应该做什么。

现在,您可以自由定义将触发此操作的击键。 与此相关的最重要的一点是,它突然具有向用户提供自定义功能的能力,因此,他们实际上可以定义所需的按键动作-例如,而不必设计自己的按键映射系统。

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

稍后介绍了键绑定。 它们将动作映射到特定的键,而侦听器仅侦听按下的键。 老实说,使用哪一个并不重要,但是使用键绑定始终是更可取的。

也有许多具有其优点/缺点的库。 尽管对于2D游戏来说,键绑定应该没问题。 但是,请注意,不建议在游戏开发中使用Java API。 如果您想构建3D或内容丰富的2D游戏,最好使用OpenGL。 尝试使用LWJGL或JOGL(通常首选LWJGL),也可以使用游戏引擎,例如Slick2D或LibGDX。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM