LibGDX / Socket.io:在当前线程中找不到OpenGL上下文

时间:2017-02-17 22:28:40

标签: android node.js opengl-es socket.io libgdx

我使用Node.js,特别是Socket.io,使用LibGDX编写多人游戏。 当新玩家连接时,客户端会获得一个名为getPlayers的事件:

public void configSocketEvents(){
socket.on("getPlayers", new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            JSONArray objects = (JSONArray) args[0];
            try {
                for(int i = 0; i < objects.length(); i++){

                    Player enemy = new Player();
                   //...

玩家类:

public Player() {
    renderer = new ShapeRenderer();
    init();
}

现在,当第二个客户端连接时,会为两个客户端输出以下错误:

Exception in thread "EventThread" java.lang.RuntimeException: No OpenGL context found in the current thread.
...
at de.ej.facharbeitsspiel.Game.Player.<init>(Player.java:26)
at de.ej.facharbeitsspiel.Screens.GameScreenMP$1.call(GameScreenMP.java:149)

第149行是行Player enemy = new Player();,因此显然存在无法加载新ShapeRenderer()的问题,因为它不是OpenGL渲染线程。

知道如何解决这个问题吗?提前谢谢

1 个答案:

答案 0 :(得分:0)

好的,我解决了这个问题。

正如Xoppa在问题评论部分推荐的那样,在播放器类中创建ShapeRenderer是个坏主意,所以我在我的WorldRenderer类中创建了一个并使用了这个。