我想开发一款适用于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都是屏幕类,只是绘制图像。
当我尝试启动Second屏幕时,出现了以下异常: Client中的线程异常:在当前线程中找不到OpenGL上下文。
我能强制LibGDX线程执行指令吗?还有其他方法吗?
谢谢 Jonathan