Ich verwende akka zusammen mit Libgdx experimentieren und ich habe folgendes ProblemVerwenden Libgdx mit Akka
ERROR] [09012017 174508.522] [WorldMap-akka.actor.default-dispatcher-3] [akkaWorldMapusergame] No OpenGL context found in the current thread.
java.lang.RuntimeException No OpenGL context found in the current thread.
at org.lwjgl.opengl.GLContext.getCapabilities(GLContext.java124)
at org.lwjgl.opengl.GL11.glDepthMask(GL11.java1157)
at com.badlogic.gdx.backends.lwjgl.LwjglGL20.glDepthMask(LwjglGL20.java256)
at com.badlogic.gdx.graphics.g2d.SpriteBatch.begin(SpriteBatch.java170)
at com.badlogic.gdx.scenes.scene2d.Stage.draw(Stage.java127)
at org.anacletogames.modes.WorldMapScreen.renderContent(WorldMapScreen.scala90)
at org.anacletogames.modes.GameActor$$anonfun$receive$1.applyOrElse(GameActor.scala27)
at akka.actor.Actor$class.aroundReceive(Actor.scala480)
at org.anacletogames.modes.GameActor.aroundReceive(GameActor.scala13)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala525)
at akka.actor.ActorCell.invoke(ActorCell.scala494)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala257)
at akka.dispatch.Mailbox.run(Mailbox.scala224)
at akka.dispatch.Mailbox.exec(Mailbox.scala234)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java107)
Dies geschieht so schnell, wie ich versuche, etwas in einem Akka Schauspieler zu machen oder versuchen, einen Bildschirm im Innern zu schaffen der Schauspieler.
Momentan befindet sich der Schauspieler könnte so
class GameActor extends Actor with WithDelta
{
val fpsLogger = new FPSLogger
var screenBaseScreen = null
override def receive = {
case CreateGame(s)= screen= s
case Render =
updateDelta()
if(isTimeToRender) {
---game logic and stuff ---
stage.draw()
}
}
}
zusammengefasst werden, wenn ich .draw()
es bricht rufen und das macht sehr viel Sinn ist dies ein anderer Thread. Nichts ändert sich, wenn ich den Bildschirm innerhalb des Schauspielers erzeuge, er bricht nur bei der Screen-Erstellung ab. Nun, während sich dieses Verhalten logisch anfühlt, was kann ich tun, um diese Einschränkung von LibGDX zu umgehen? Gibt es einen Weg, dies zu erreichen? Ich habe kein Problem, einen großen Spieldarsteller zu behalten, aber ich muss die Spielschleife vom Schauspieler trennen, um einige Verhaltensweisen zu erreichen würde gerne haben.