0

我正在通过 TmxMapLoader 加载平铺地图,我可以毫无困难地获取平铺等。但是当我想从对象层中提取值时,我只能使用以下代码获取 x、y:

MapProperties props = layer.getObjects().get(i).getProperties();
float x = (float) props.get("x");
float y = (float) props.get("y");

这让我得到了正确的价值观,但是当我尝试添加这个时:

float width = (float) props.get("width");
float height = (float) props.get("height");

它向我抛出了这个错误:

Exception in thread "LWJGL Application" java.lang.NullPointerException
at cz.vilix.managers.MapManager.<init>(MapManager.java:67)
at cz.vilix.main.Game.create(Game.java:50)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:136)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)

(MapManager 中的第 67 行是我尝试获取宽度值的地方。)这对我来说似乎有点难,因为我可以从属性窗口中列出的对象的属性中获取任何内容:

在此处输入图像描述

同样使用“宽度”和“高度”而不是“宽度”和“高度”也不起作用。

像这样将类型更改为 Object:

Object width = props.get("Width");
Object height = props.get("Height");
System.out.println(width + " " + height);

打印:null null

4

1 回答 1

1

可行的解决方案是获取 RectangleMapObject(或任何其他形状),并使用此代码获取基本 Rectangle:Rectangle r = rect.getRectangle()并且您可以使用 Rectangle 的参数。

或者,您可以跳过创建新 Rectangle 对象的步骤,并像以下代码一样使用它:

RectangleMapObject rect = (RectangleMapObject) layer.getObjects().get(i);
float x = (float) rect.getRectangle().x;
float y = (float) rect.getRectangle().y;
float width = rect.getRectangle().width;
float height = rect.getRectangle().height;
于 2014-05-20T15:34:57.767 回答