2015-12-29 23 views
2

我正在創建一個帶有幾個不同形狀的板空間(如Risk)的Android棋盤遊戲。具有不規則板空間的Android遊戲板

我想確保我的主板顯示正確,並且OnTouchListeners保留在GUI上,而不管屏幕大小/分辨率如何。

可能的解決方案我已經想到了和自己的問題:

  1. 創建電路板上的單個圖像和分配基於像素的幾何OnTouchListeners。問題:如果用戶的顯示器是不同的分辨率,我的聽衆可能與我的圖像不在同一像素下(對吧?)

  2. 創建幾個ImageButton並將它們排列在一起。問題:ImageButtons可能會根據顯示重新排列,最終會出現重疊空格或間隙。

  3. 使用Android自定義繪圖。如果我這樣做,我會如何將我的聽衆鏈接到我的Canvas並確保它們已同步?

基本問題: 如何確保在使用不規則幾何圖形的GUI中偵聽器與圖形同步?

回答

0

我在一個不規則的觸摸區域的應用程序工作,所以我可以給你一個方法來實現這一目標的指導。

從您的整個主板的單個圖像開始。無論任何設備分辨率,該圖像都將具有一定的(「內在」)寬度和高度。

現在來了這個乏味的部分。您(或者您的圖形設計師)需要繪製每個觸摸區域的不規則多邊形的座標。這些將是您的應用程序的常量。

當您顯示您的主板時,如果您正在縮放和平移圖像,則需要跟蹤顯示器的轉換矩陣。當用戶觸摸屏幕時,您將得到來自OnTouchListener的x,y座標,並且爲了使這些座標有用,您必須對x,y進行「解除變換」,以便根據棋盤和多邊形的固有尺寸對其進行歸一化。

我們使用的算法從http://alienryderflex.com/polygon/推出我們自己的命中測試邏輯,但你也可以試試這個:創建一個Path你的多邊形座標(使用moveTo()lineTo()close()),然後分配PathRegion使用Region.setPath()。一旦你有了,據說你應該能夠使用Region.contains(x,y)進行命中測試,但我從來沒有嘗試過,所以我不能保證這會起作用。