2014-11-05 2 views
0

Я пытаюсь заставить LibGDX сделать снимок экрана с экрана устройств, а затем загрузить этот скриншот в Sprite для визуализации позже. Однако, когда я пытаюсь, приложение выходит из строя с помощью NullPointerException. Я пробовал следующие ссылки: taking screenshot in libgdx и using ScreenUtils to save screenshot as image in libgdx. Когда я пытаюсь создать текстуру для спрайта, тогда он выходит из строя с помощью 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 Application" 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.

код и трассировки стека для создания PIXMAP:

// 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 Application" 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

ответ

0

Так Я решил эту проблему только для создания другой проблемы. О, радости программирования! ;-) Так или иначе, я спрошу о моей второй проблеме в другом вопросе. Ответ на этот вопрос заключается в том, что я слишком быстро избавился от Pixmap или TextureRegion.

Какой код вы получаете в конце программирования в течение 12 часов подряд? Костяной код!

Ой хорошо урок, только программа на 11 часов. ;-)

Смежные вопросы