我使用的是LibGDX一起阿卡試驗和我有以下問題使用LibGDX與阿卡
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)
出現這種情況,只要我努力呈現阿卡演員內在的東西,或試圖內創建屏幕演員。
現在的演員可以這樣概括
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()
}
}
}
當我打電話.draw()
它打破,這使得有很大的意義,這是一個不同的線程。如果我在演員內部創建屏幕,則沒有任何變化,它只是在創建屏幕時中斷。現在,雖然這種行爲感覺符合邏輯,但是我能做些什麼來繞過LibGDX的這種侷限性嗎?有沒有辦法實現這一點?我保留一個大的遊戲角色並沒有問題,但我需要將演員的Game循環分開來實現一些行爲想擁有。