2013-03-04 116 views
12

我正在研究需要一些GUI在我的遊戲屏幕上方的遊戲。類似於Android中的FrameLayoutLibgdx屏幕gui(用於暫停按鈕)

我有GameScreen,一切都在發生。 我現在想要的是添加一個「暫停」按鈕,高分信息等。

我試圖將Stage對象與普通精靈繪圖相結合。 但是我在處理輸入時遇到了一些問題:如果用戶點擊了舞臺上的暫停按鈕,或者點擊了遊戲區域(我應該添加一些子彈),如何管理...

有人能爲我清楚嗎?

回答

23

您應該可以使用Stage來管理您的用戶界面。爲了讓輸入正常工作,您需要添加一個InputMultiplexer ,這樣Stage,然後您當前的輸入方案都將獲得輸入。

要設置它,你會做這樣的事情:(基於https://code.google.com/p/libgdx/wiki/InputEvent代碼代碼示例)

注意順序很重要

InputMultiplexer multiplexer = new InputMultiplexer(); 
multiplexer.addProcessor(stage); 
multiplexer.addProcessor(gameScreenInputProcessor); 
Gdx.input.setInputProcessor(multiplexer); 

(我猜你」我們希望舞臺先獲取事件以查看UI是否被觸摸)。此外,來自輸入事件處理程序的布爾返回值對於多路複用器來說更爲重要,因爲「已處理」事件不會由多路複用器傳播。 Stage內部的UI事件都有自己的「已處理」標誌(大多數情況下它是正確的,但存在一些細微差別)。

InputMultiplexer的一種替代方法是創建一個「GameScreenActor」(Actor的新子類),其中包含您插入全局Stage的當前遊戲屏幕。不過,您必須將輸入處理移至scene2d方法。這可能不是你的正確選擇,但它是一個可行的選擇。

+0

好吧,我雖然如此...我檢查了InputMultiplexer文檔...您的答案使sence。我會嘗試這個問題......希望它能起作用。 Tnx很多! :)我熟悉在Android中處理輸入,我希望它的作品類似:) – Veljko 2013-03-04 15:44:02