我正在通过TmxMapLoader加载Tiled地图,我可以毫无困难地获取tile等。但是当我想从Object Layer中提取值时,我只能使用以下代码获取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行是我尝试获取宽度值的地方。)这对我来说似乎有点像,因为我可以从属性窗口中列出的对象属性中获取任何内容。 :
同样使用“Width”&amp; “高度”而不是“宽度”&amp; “身高”不起作用。
将类型更改为Object,如下所示:
Object width = props.get("Width");
Object height = props.get("Height");
System.out.println(width + " " + height);
打印:null null
。
答案 0 :(得分: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;