【发布时间】:2014-11-05 08:49:42
【问题描述】:
我正在尝试让 LibGDX 拍摄设备屏幕的屏幕截图,然后将该屏幕截图加载到 Sprite 中以便稍后渲染。但是,当我尝试它时,应用程序会因 NullPointerException 而崩溃。我尝试了以下链接:taking screenshot in libgdx 和 using ScreenUtils to save screenshot as image in libgdx。当我尝试为 Sprite 创建纹理时,它会因 NullPointerException 而崩溃。
我也试过 ScreenUtils.getFrameBufferTexture();方法和 ScreenUtils.getFrameBufferPixmap() 方法,但它们总是因 NullPointerException 而崩溃。他们崩溃的行取决于我选择获取屏幕截图的方式,并且我已经确认确实在截取屏幕截图时创建了 Pixmap 或 TextureRegion。当我尝试将其加载到纹理或 Sprite 中时,它会因 NullPointerException 而崩溃。
请不要将此标记为重复的问题,因为我不想将屏幕截图保存到 PNG 中。我正在尝试直接在 Sprite 中使用它,但它正在崩溃。
用于创建 TextureRegion 的代码和堆栈跟踪:
// create the screen shot
UT.screenShot = ScreenUtils.getFrameBufferTexture(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
// Use screenshot
screenShot = new Sprite(UT.screenShot);
我得到了这个堆栈跟踪:
线程“LWJGL 应用程序”java.lang.NullPointerException 中的异常
at com.badlogic.gdx.graphics.g2d.TextureRegion.setRegion(TextureRegion.java:112)
at com.badlogic.gdx.graphics.g2d.Sprite.<init>(Sprite.java:83)
at *** MY CODE *** CompleteScreen.java:83
at *** MY CODE *** GameEngine.java:82
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:206)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
这只是我用来创建屏幕截图的方法之一。但是所有方法都使用 ScreenUtils 类来获取屏幕截图。所有这些方法确实创建了一个屏幕截图。但是,在尝试创建 Sprite 或纹理时,所有这些方法都失败了。
用于创建像素图的代码和堆栈跟踪:
// create the screen shot
UT.screenShot = ScreenUtils.getFrameBufferPixmap(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
// Use screenshot
Texture texture = new Texture(UT.screenShot);
screenShot = new Sprite(texture);
我得到了这个堆栈跟踪:
线程“LWJGL 应用程序”java.lang.NullPointerException 中的异常
at com.badlogic.gdx.graphics.glutils.PixmapTextureData.<init>(PixmapTextureData.java:37)
at com.badlogic.gdx.graphics.glutils.PixmapTextureData.<init>(PixmapTextureData.java:32)
at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:104)
at *** MY CODE *** CompleteScreen.java:84
at *** MY CODE *** GameEngine.java:82
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:206)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
【问题讨论】:
-
您为什么不发布任何一种方法的堆栈跟踪以及您的代码?如果没有关于异常以及您的代码的任何信息,我们将无能为力。
标签: nullpointerexception libgdx textures screenshot sprite