java.lang.NoClassDefFoundError: java.awt.Point

java.lang.NoClassDefFoundError: java.awt.Point

我正在使用 Android Studio 为 android 设备开发基于 LibGDX 的游戏。我从 java.awt.Point 导入了 "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]);

这是因为Android不支持awt(或Swing)。这些是开发计算机应用程序时要使用的图形库。尝试使用

android.graphics.Point

相反。

你不应该使用 com.badlogic.gdx.math.GridPoint2D 而不是 java.awt.Point 吗?

milez 的答案是正确的。 Android 没有您用于 DesktopLauncher 的点 class。

但是,您应该注意一件事:LibGDX 应该以与设备无关的方式工作。这意味着代码不需要在设备之间进行更改。因此,您需要找到一种与设备无关的解决方案。

你有两个选择:

您可以创建自己的 MyPoint class,其中包含 X 和 Y 整数字段。这非常简单,而且几乎没有开销。

您也可以使用类似点的 class LibGDX 提供称为 Vector2。 class 保证适用于所有设备:

Vector2 point = new Vector2(x, y);

对于此选项,调用 point.x 将为您提供传入的任何 X 的浮点表示。但是,如果您想在数组中使用此浮点值,则必须将其转换为整数.

my_x = my_array[(int) point.x];

它还为您提供了一些有用的数学选项,例如 translate(dx, dy) 或 angle()。如果您有兴趣做更多的选择而不仅仅是存储两个整数值,请使用这个。