2014-11-05 72 views
0

我想让LibGDX拍摄设备屏幕的截图,然后将截图加载到雪碧中以供以后渲染。但是,当我尝试它的应用程序崩溃与NullPointerException。我尝试了以下链接:taking screenshot in libgdxusing ScreenUtils to save screenshot as image in libgdx。当我尝试为Sprite创建纹理时,它会与NullPointerException一起崩溃。libgdx截图到雪碧

我也试过ScreenUtils.getFrameBufferTexture();方法和ScreenUtils.getFrameBufferPixmap()方法,但总是会发生NullPointerException异常。他们碰撞的线条根据我选择的屏幕截图的方式而变化,并且我已经确认在拍摄屏幕截图时确实创建了Pixmap或TextureRegion。当我尝试将它加载到Texture或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或Texture时,所有这些方法都会失败。

代码和堆栈跟踪创建像素图:

// 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) 
+4

为什么不发布任何方法的堆栈跟踪以及代码?如果没有任何有关例外的信息以及您的代码,我们无法提供帮助。 – Springrbua 2014-11-05 09:40:22

回答

0

所以我解决了这个问题只是为了创造另一个问题。哦编程的乐趣! ;-)无论如何,我会在另一个问题上询问我的第二个问题。这个问题的答案是我很快就摆脱了Pixmap或TextureRegion。

在12小时编程结束时你会得到什么样的代码?骨头代码!

哦,很好的经验教训,只有11个小时的程序。 ;-)