Я пытаюсь разработать игру для платформы Android, используя библиотеку Libgdx. Для сети я использую библиотеку Kryonet.
Я хочу изменить экран, когда буду уверен, что мое приложение подключено к моему серверу.
Сетевая часть работает, но у меня проблема с потоками: это поток Kryonet, который выполняет OpenGL, а не поток 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, которые просто рисуют изображение.
У меня есть это исключение, когда я пытаюсь запустить Второй экран: Исключение в потоке "Клиент" java.lang.RuntimeException: В текущем потоке не найден контекст OpenGL.
Могу ли я заставить поток LibGDX выполнять инструкции? Возможен ли другой подход?
Спасибо, Джонатан