我正在努力让我的程序识别它何时点击了一个大陆。 为此,我使用了:
new Color(texture.getTextureData().consumePixmap().getPixel(x, y));
x和y对应于鼠标各自的坐标。
在地图上点击每个点的arbg值,结果如下:
从这些结果来看,虽然它们完全专注于不同的颜色,但第一和第二是难以区分的。此外,北上突然渲染所有arbg 0?
有谁知道为什么会这样?是否有解决方案来获得像素的颜色? 谢谢。
PS:此项目适用于桌面。 PPS:当检查每个像素的所有alpha值时,这是我显示它时得到的。好像图像被翻转了?
答案 0 :(得分:1)
我注意到您的数据是arbg而不是rgba。你能说清楚吗?
如何从Color对象获取数据?可能存在问题。
我尝试了你的代码,它给了我一个错误。你需要调用prepare函数。
texture.getTextureData().prepare;
Color color = new Color(texture.getTextureData().consumePixmap().getPixel(x, y));
System.out.println(color.toString());
上面的代码似乎有效。只要确保你试图在正确的纹理上找到颜色。
还要确保已导入正确的Color类。 (java.awt.Color不正确)
编辑:傻我。我刚想起来。 libGDX中的坐标系与输入的坐标系不同(如果我没记错的话),试试这个:
mouse.y = ScreenHeight - mouse.y;
渲染在坐标系的第4个区域完成。虽然输入是在第1。所以Y轴是相反的。这是一个关于坐标系的链接,可以帮助您更好地理解。
libgdx coordinate system differences between rendering and touch input
要测试此功能,请在触摸位置绘制一些内容。看看它是否在你触摸的同一个地方画画。