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)

ここで、 prtscr buttonを含まないKeyskeyクラスのオブジェクトです。

さらに、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 に答える