[英]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.