2016-01-30 5 views
0

Я пытаюсь распознать свою программу, когда она нажала на континент. Для этого я использовал:libGdx неправильно отображает цвет выбранного пикселя

new Color(texture.getTextureData().consumePixmap().getPixel(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: При проверке всех значений альфа для каждого пикселя это то, что я получаю, когда я их показываю. Кажется, что изображение перевернуто?

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()); 

Код, как представляется, работает. Просто убедитесь, что вы пытаетесь найти цвет на правильной текстуре.

Также убедитесь, что вы импортировали правильный класс цвета. (java.awt.Color неверен)

EDIT: Глупый меня. Я только что вспомнил. Система координат в libGDX отличается от системы координат входа (если я правильно помню), попробуйте следующее:

mouse.y = ScreenHeight - mouse.y; 

Rendering делается на 4 части системы координат. Пока вход находится в 1-м. Таким образом, ось Y обращена. Вот ссылка о системе координат, которая может помочь вам лучше понять.

libgdx coordinate system differences between rendering and touch input

Чтобы проверить это, нарисовать что-то на месте расположения прикосновения. Посмотрите, рисует ли он в том же месте, где вы касались.

+0

Я действительно звонил в заранее подготовленный, но я не думаю, что там проблема. Я добавил к своему оригинальному сообщению - изображение кажется перевернутым при проверке значений arbg. –

+0

@ user3326720 Прочтите EDIT. – ossobuko