Я пытаюсь заставить 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)
Почему вы не отправляете трассировку стека любого метода, а также вашего кода? Без каких-либо сведений об исключении, а также в коде, мы не можем помочь. – Springrbua