加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

libGDX中的java线程

发布时间:2020-12-14 05:39:24 所属栏目:Java 来源:网络整理
导读:嘿伙计们我正在用libGDX制作游戏,我真的想要对游戏进行操作,所以我在不同的线程上运行一个绘制循环和一个逻辑循环,就像你用paintcomponent循环和runnable创建一个简单的 java swing游戏一样运行循环 我对c中的线程有经验,但在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()).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读