我使用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渲染线程。
知道如何解决这个问题吗?提前谢谢
答案 0 :(得分:0)
好的,我解决了这个问题。
正如Xoppa在问题评论部分推荐的那样,在播放器类中创建ShapeRenderer是个坏主意,所以我在我的WorldRenderer类中创建了一个并使用了这个。