2011-10-12 51 views
1

我目前正在研究一些簡單的二維塔防遊戲,以瞭解一些Android遊戲開發的基礎知識。爲了處理我的圖形,我有一個擴展SurfaceView的自定義對象,並且我的所有繪圖都發生在SurfaceView的畫布對象上。這一切工作正常。Android - 從SurfaceView訪問按鈕

我希望我的遊戲有兩個階段。 「戰鬥」階段和「建設階段」。在構建階段,我試圖添加一個可以點擊的按鈕來開始下一個戰鬥階段。從我的研究中,這聽起來像按鈕不能添加到SurfaceView中,而是我應該將SurfaceView和按鈕放入相對佈局中,並按照這種方式對齊。但是,因爲我只想讓按鈕顯示一半時間,所以我正在努力處理有條件地添加/刪除按鈕的最佳方式。我可以在那裏破解它,但如果可能的話,我寧願花時間做半正確的事情。不幸的是,我還沒有找到任何這方面的好例子。

有沒有「最佳實踐」的方式來做到這一點,或者我錯過了什麼?任何代碼示例如何可以處理將不勝感激。

謝謝!

更新: 據我所知,我可以使用佈局來保存SurfaceView和我想要顯示的按鈕。我的問題是,這些按鈕只需要偶爾可見。我需要做的是從我的SurfaceView對象中設置父級佈局中按鈕的可見性。但是,這是我正在努力的部分。

回答

2
GLSurfaceView view = new GLSurfaceView(this); 
Button button = new Button(this); 
setContentView(view); 
addContentView(button,new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT)); 

試試這個代碼,我放在一個TextView這樣才和它的工作

+0

我已經在opengl中嘗試過了,而不是在畫布中同樣在canvas中實現 – Durga

0

繪製畫布,你在比賽的其餘覆蓋的位圖上的按鈕。這樣可以更靈活地設計按鈕的外觀,並且只需要一條if語句就可以檢查應該繪製按鈕的時間。然後,使用同步塊從UI線程中拉取touchevents,並檢查它們是否落入按鈕所在的屏幕區域。

0

將按鈕添加到保存曲面視圖的活動。然後,您可以通過將消息傳遞到更新曲面視圖的線程中的處理程序來將其設置爲可見/不可見。

查看LunarLander示例代碼(儘管使用textview而不是按鈕,iirc)。