我正在使用Android Studio为Android设备开发基于LibGDX的游戏。我已经导入了" Point"来自java.awt.Point。我使用DesktopLauncher测试了它。它工作正常。
问题:当我在Android设备中加载它时,我收到错误" java.lang.NoClassDefFoundError:java.awt.Point"当我到达下面的行。请告知如何解决这个问题。
Point p=new Point(toyCells[i][0] + toyCellsAdjecentCells[j][0],
toyCells[i][1] + toyCellsAdjecentCells[j][1]);
答案 0 :(得分:4)
这是因为Android不支持awt
(或Swing
)。这些是在开发计算机应用程序时使用的图形库。尝试使用
android.graphics.Point
代替。
答案 1 :(得分:1)
你不应该使用com.badlogic.gdx.math.GridPoint2D
代替java.awt.Point
吗?
答案 2 :(得分:1)
milez有正确的答案。 Android没有您用于DesktopLauncher的Point类。
但是,您应该注意一件事:LibGDX应该以与设备无关的方式工作。这意味着代码不应要求在设备之间进行更改。因此,您需要找到与设备无关的解决方案。
您有两种选择:
您可以创建自己的MyPoint类,其中包含X和Y整数字段。这非常简单,并且几乎没有开销。
你也可以使用类似Point的类LibGDX提供名为Vector2的。保证本课程适用于所有设备:
Vector2 point = new Vector2(x, y);
对于这个选项,调用point.x将为你提供你传入的任何X的浮点表示。但是如果你想在数组中使用它,那么这个浮点值必须被转换为一个整数。
my_x = my_array[(int) point.x];
它还为您提供了一些有用的数学选项,如translate(dx,dy)或angle()。如果您有兴趣做更多选项而不仅仅是存储两个整数值,请使用此选项。