2016-01-30 125 views
0

我試圖讓我的程序在單擊某個大洲時進行識別。 要做到這一點,我已經使用:libGdx不能正確顯示選定像素的顏色

new Color(texture.getTextureData().consumePixmap().getPixel(x, y)); 

x和y對應於鼠標的各個座標。

這是所使用的圖像: enter image description here

,這就是它看起來像我已經點擊地圖上的三個不同地點後: enter image description here

獲取arbg值的每個點點擊地圖,結果如下:

  • 在大陸:0.0,1.0,1.0,1.0
  • 要大陸的西:0.0,1.0,1.0,1.0
  • 爲了大陸的西北方:0.0,0.0,0.0,0.0

從這些結果中,第一和第二是無法區分的,儘管它們完全關注不同的顏色。而且,北上突然渲染所有arbg 0?

有沒有人有任何想法,爲什麼發生這種情況?是否有解決方法來獲取像素的顏色? 謝謝。

PS:該項目用於桌面。 PPS:當檢查每個像素的所有alpha值時,這是我顯示它們時得到的結果。看起來圖像翻轉了?

enter image description here

+0

至少給我一個+1 – ossobuko

回答

1

我注意到你的數據是arbg而不是RGBA。你能說清楚嗎?

如何從Color對象獲取數據?問題可能在那裏。

我試過你的代碼,它給了我一個錯誤。你需要調用準備功能。

texture.getTextureData().prepare; 
Color color = new Color(texture.getTextureData().consumePixmap().getPixel(x, y)); 
System.out.println(color.toString()); 

上面的代碼似乎工作。只要確保你試圖找到正確的紋理上的顏色。

此外請確保您導入了正確的Color類。 (顏色不正確)

編輯:愚蠢的我。我剛想起來。座標系中的libGDX比輸入的座標系(如果我沒記錯)不同,試試這個:

mouse.y = ScreenHeight - mouse.y; 

渲染是在座標系的第四區完成。雖然輸入是在第一。所以Y軸是相反的。這是一個關於座標系的鏈接,可以幫助你更好地理解。

libgdx coordinate system differences between rendering and touch input

要進行測試,得出的東西觸摸的位置。看看它是否在你觸摸的地方畫畫。

+0

我確實打電話準備,但我不認爲這是問題所在。我已經添加到我的原始文章 - 圖像似乎在檢查arbg值時翻轉。 –

+0

@ user3326720請閱讀編輯。 – ossobuko