0

使用 PlayN,我正在尝试更改方形图层上的图像。我正在尝试创建翻转效果来更改图像。我这样做是通过将图层的原点设置为图像的中心,然后减小宽度并在宽度几乎为零时更改图像(图像不可见),然后将宽度增加回原始大小。

我正在使用自定义 Timer 任务来播放此转换。

现在我有一个问题和一个问题。

问题是有没有更好的方法来实现我想要做的事情

问题是图像完美翻转但是当我再次单击图像将其翻转回来时,出现以下错误

[java] Exception in thread "Timer-1" java.lang.RuntimeException: No OpenGL context found in the current thread.
 [java]   at org.lwjgl.opengl.GLContext.getCapabilities(GLContext.java:124)
 [java]   at org.lwjgl.opengl.GL11.glDeleteTextures(GL11.java:721)
 [java]   at playn.java.JavaGL20.glDeleteTextures(JavaGL20.java:1050)
 [java]   at playn.core.gl.GL20Context.destroyTexture(GL20Context.java:164)
 [java]   at playn.core.gl.ImageGL.clearTexture(ImageGL.java:60)
 [java]   at playn.core.gl.ImageGL.release(ImageGL.java:87)
 [java]   at playn.core.gl.ImageLayerGL.setImage(ImageLayerGL.java:74)
 [java]   at playn_poc.core.util.RotationTimerTask.run(RotationTimerTask.java:51)
 [java]   at java.util.TimerThread.mainLoop(Timer.java:512)
 [java]   at java.util.TimerThread.run(Timer.java:462)
4

1 回答 1

0

您只能在主线程(调用 update()/paint() 方法的线程)中调用绘图方法 - 如果您创建了一个计时器任务,我假设它在不同的线程上运行,那么它将没有 gl语境。不要使用定时器任务,也不要使用定时器任务,而是抛出事件,并在主 update()/paint() 方法中监听事件以执行您的操作。

于 2013-04-03T10:36:46.407 回答