Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android LibGDX/Socket.io:在当前线程中未找到OpenGL上下文_Android_Node.js_Opengl Es_Socket.io_Libgdx - Fatal编程技术网

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

Android LibGDX/Socket.io:在当前线程中未找到OpenGL上下文,android,node.js,opengl-es,socket.io,libgdx,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 object

我使用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();
                   //...
现在,当第二个客户端连接时,两个客户端都会输出以下错误:

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)
线程“EventThread”java.lang.RuntimeException中的异常:在当前线程中找不到OpenGL上下文。
...
在de.ej.facharbeitsspiel.Game.Player。(Player.java:26)
在de.ej.facharbeitsspiel.Screens.GameScreenMP$1.call(GameScreenMP.java:149)
第149行是一行
玩家敌人=新玩家(),因此显然存在一个问题,即无法加载新的
shaperender()
,因为它不是OpenGL渲染线程


你知道怎么解决这个问题吗?提前谢谢

好的,我解决了这个问题


正如Xoppa在问题的评论部分所建议的,在player类中创建ShaperEnder是一个坏主意,因此我在WorldRenderer类中创建了一个ShaperEnder,并使用了它。

当然,不要在其他线程中创建需要在渲染线程中创建的东西。您可能需要阅读以下内容:。您的玩家类(游戏逻辑)不应该关心ShaperEnder(渲染逻辑)。无论如何,请阅读以下内容:,因为您的问题太广泛(没有包含足够的细节)无法回答。但是如果我在套接字事件之外创建了一个播放器,那么一切都会正常进行。我的问题中缺少哪些信息?如果您真的想采用这种方法(这是不推荐的),那么这将帮助您包括所需的信息:。不过,一般来说,如果您想在渲染线程上执行某些操作,请使用
Gdx.app.postrunable
。好的,我解决了这个问题。正如您所建议的,我没有在Player类中创建新的ShaperEnder,而是在WorldRenderer类中创建了一个,并使用了这个。谢谢你的帮助!
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)