3

通过在 Stack Overflow 上遵循这个解决方案,我提出了以下 Java 类:

public final class Screenshot {

    private static byte[] pixels;
    private static Pixmap pixmap;

    public static void take() {
        pixels = ScreenUtils.getFrameBufferPixels(0, 0,
                Gdx.graphics.getBackBufferWidth(),
                Gdx.graphics.getBackBufferHeight(),
                true);

        pixmap = new Pixmap(Gdx.graphics.getBackBufferWidth(),
                Gdx.graphics.getBackBufferHeight(),
                Pixmap.Format.RGBA8888);

        BufferUtils.copy(pixels, 0, pixmap.getPixels(), pixels.length);
        PixmapIO.writePNG(Gdx.files.external("./screenshot_" + new Date().getTime() + ".png"), pixmap);

        pixmap.dispose();
        pixels = null;
    }
}

调用Screenshot().take()将获取 LibGDX 渲染缓冲区并将其转储到 PNG 文件中。正是我想要的。

我的问题是是否有“捕获”打印屏幕按钮的好方法。有我可以使用的打印屏幕键码吗?

4

1 回答 1

3

似乎在 LibGDX 中你不能

您检查键盘输入的方式是

    Gdx.input.isKeyPressed(key)

哪里keyKeys类的对象,它不包括 prtscr button

更重要的是 - Keys对象是整数,所以我试图通过检查找出 prtsrc 的按钮代码是什么:

    uiStage.addListener(new ClickListener()
    {
        @Override
        public boolean keyDown(InputEvent event, int keycode)
        {
            System.out.println(keycode);
            return true;
        }
    });

我在我的电脑上得到了0 。我通过打印检查了 Keys 类中0

    System.out.println(Input.Keys.toString(42));

结果是Unknown。老实说,我很惊讶,但似乎 LibGDX 不支持 PRINT_SCREEN 按钮。

可能有一种方法可以省略 LibGDX 机制并使用平台特定功能来检查是否单击了 prtsrc (互联网说它的 ASCII 码是44)但 LibGDX 本身的答案似乎是 - 没有办法做到这一点。

于 2016-02-20T22:54:39.737 回答