问题描述
- 在tiledmappacker工具中调用libgdx的Gdx类的静态对象为null的问题
-
1、问题由来
最近在学习libgdx(使用libgdx0.9.9),使用地图打包工具tiledmappacker.jar时报错。
实在没有办法,找到网上的一位兄台发的一篇贴子(链接如下)libgdx的tmx地图处理工具gdx-tiled-preprocessor.jar(TiledMapPacker)修正版 http://www.cnblogs.com/SkyD/archive/2012/04/19/2457237.html
试着自己生成tiledmappacker.jar,但是运行还是有相同的错误,开始以为版本问题,不过看了代码后发现不是。最后实在没招了,把gdx-source.jar包解开,试着修改,但是最后还是没有解决问题。
2、问题现象
Gdx.gl.glGenTextures(1, buffer2);
在执行上面这句代码时, Gdx.gl对象为null,检查Gdx的其他成员变量graphics,audio等, 也全部为null。可是Gdx类并没有改动过,一直是按libgdx的原来代码。后来我直接在main函数中调用Gdx的静态对象,也是同样问题。具体出现的异常如下:
Thread [main] (Suspended (exception NullPointerException)) Texture.createGLHandle() line: 166 Texture.create(TextureData) line: 158 Texture.<init>(FileHandle, Pixmap$Format, boolean) line: 133 Texture.<init>(FileHandle, boolean) line: 126 TmxMapLoader.load(String, TmxMapLoader$Parameters) line: 109 TmxMapLoader.load(String) line: 91 TiledMapPacker.processMaps(File, File, TexturePacker2$Settings) line: 155 Main.main(String[]) line: 37
(说明一下,gdx.jar,gdx-natives.jar.....等相关包已经正常添加并引用了,当然,最后gdx.jar已经删除换成代码了。)
3、附libgdx中的Gdx.javapackage com.badlogic.gdx; import com.badlogic.gdx.graphics.GL10; import com.badlogic.gdx.graphics.GL11; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.GLCommon; public class Gdx { public static Application app; public static Graphics graphics; public static Audio audio; public static Input input; public static Files files; public static Net net; public static GLCommon gl; public static GL10 gl10; public static GL11 gl11; public static GL20 gl20;
}
最后,请大家帮忙看看是什么原因引起的,在此先谢谢大家!
解决方案
新版的libgdx不用将地图打包了,直接使用即可。
时间: 2024-10-26 01:46:22