无法在libgdx中设置延迟

时间:2017-04-16 10:48:49

标签: java libgdx

我想在一段时间后从数组中删除索引,我希望它会掉落,然后将其删除。

private final int gravity = 4;
private long lifeTime=0;
private long delay = 20000L; 

public void objGravity() {
 while (array.get(array.size - 1).y > 0)
  array.get(array.size - 1).y -= gravity;

 lifeTime = System.currentTimeMillis();
 lifeTime += Gdx.graphics.getDeltaTime();

 if (lifeTime > delay) {
  array.removeIndex(array.size - 1);
  lifeTime = 0;
 }
}

对象立即从阵列中移除,就好像没有任何延迟一样,因此它似乎没有落在屏幕上。

更新

我删除了时间等等。我添加了一个计数器来计算需要删除多少个对象,然后我执行一个循环来移除array.size-1,只要计数器> 0。

不确定它是否是最好的方法,看起来像是黑客,但我不想在旧手机上做线程。如果您有更好的主意,请分享

1 个答案:

答案 0 :(得分:1)

不要在render方法中触发线程,它不安全,可能导致线程泄漏,许多其他问题并且难以维护代码,处理时间使用变量每次调用render时添加delta时间,当这个变量优越时,1.0f表示已经过了一秒,你的代码将是这样的:

{{1}}

为了保持井井有条,我个人在我的主游戏类上有一个数组,它包含我所有的定时事件,并处理渲染周期中的所有内容。