3

Libgdx ライブラリを使用して、Android プラットフォーム用のゲームを開発しようとしています。ネットワークには、Kryonet ライブラリを使用します。

アプリケーションがサーバーに接続されていることが確実なときに、画面を変更したいと考えています。
ネットワーク部分は機能しているようですが、スレッドに問題があります。OpenGL を実行するのは Kryonet のスレッドであり、Libgdx スレッドではありません。

public class MyGdxGame extends Game {
    public static int UDP_PORT = 55555, TCP_PORT = 55556;
    private Client client;

    @Override
    public void create() {
        /*
         * client connection
         * etc ...
         */
        client.addListener(new Listener() {
            private int nb = 0;

            @Override
            public void received(Connection connection, Object data) {
                super.received(connection, data);
                nb++;
                if (nb == 5) {
                    MyGdxGame.this.setSecondScreen();
                }
            }
        });
        setScreen(new First(this, client));
    }

    protected void setSecondScreen() {
        setScreen(new Second(this, client)); //This part should be executed by Libgdx thread ?!     
    }

FirstSecondは両方とも、画像を描画するだけの Screen クラスであることに注意してください。

Second Screenを起動しようとすると、この例外が発生します: スレッド " Client " で例外 java.lang.RuntimeException: 現在のスレッドで OpenGL コンテキストが見つかりません。

LibGDX スレッドに強制的に命令を実行させることはできますか? 他のアプローチは可能ですか?

ありがとうジョナサン

4

1 に答える 1