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 ?!
}
FirstとSecondは両方とも、画像を描画するだけの Screen クラスであることに注意してください。
Second Screenを起動しようとすると、この例外が発生します: スレッド " Client " で例外 java.lang.RuntimeException: 現在のスレッドで OpenGL コンテキストが見つかりません。
LibGDX スレッドに強制的に命令を実行させることはできますか? 他のアプローチは可能ですか?
ありがとうジョナサン