libGDX中的java线程

前端之家收集整理的这篇文章主要介绍了libGDX中的java线程前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
嘿伙计们我正在用libGDX制作游戏,我真的想要对游戏进行操作,所以我在不同的线程上运行一个绘制循环和一个逻辑循环,就像你用paintcomponent循环和runnable创建一个简单的 java swing游戏一样运行循环

我对c中的线程有经验,但在java中却没有那么多
我能够创建一个线程的唯一方法是创建一个扩展线程然后在那里创建运行循环的类

但是制作运行循环的关键是允许每个屏幕自由地计算逻辑,所以我最终需要某种具有自定义线程类的抽象类

我问是否有更简单或更标准的方法来实现这种情况的线程

解决方法

libGDX库已经为OpenGL上下文更新运行了一个单独的渲染线程.见 http://code.google.com/p/libgdx/wiki/TheArchitecture#The_Graphics_Module

We already learned that the UI thread is not executed continuously but only scheduled to run by the operating system if an event needs to be dispatched (roughly :p). That’s why we instantiate a second thread we usually refer to as the rendering thread. This thread is created by the Graphics module that itself gets instantiated by the Application at startup.

对于每个屏幕刷新,此渲染线程将调用主游戏对象上的ApplicationListener.render()方法(因此它应该是大约60hz),所以只需将渲染循环的主体放在此方法的实现中.

您可以在ApplicationListener的create方法中创建一个额外的后台线程(例如,用于游戏逻辑)(确保在dispose方法中清除它).除了渲染线程之外,我认为任何预先存在的线程都不是游戏逻辑的正确位置.

对于线程之间的通信,您可以使用任何现有的Java同步方法.我使用过Java的ArrayBlockingQueue<>将请求发送到后台线程.我使用Gdx.app.postRunnable()获取后台线程以将数据推送到渲染线程(这样的Runnables在下一帧上运行,然后调用render()).

猜你在找的Java相关文章