簡體   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