2
我想在一段时间后从数组中删除索引,我希望它下降,然后将其删除。无法在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;
}
}
的对象被立即从阵列移除,如果没有任何延迟,因此它不会出现被倒下的屏幕上。
更新
我删除时间等。我添加了一个计数器来计算需要删除多少个对象,然后我执行一个循环,只要计数器> 0,就会删除array.size-1。
不知道这是否是最好的方法,看起来像是黑客,但我不想在老手机上做线程。如果你有更好的主意,请分享
你读过什么System.currentTimeMillis()返回?然后,添加Gdx.graphics.getDeltaTime()(同时,最好在游戏/屏幕的render()方法中使用float delta值) - 这将返回一个大的值,如1349333576093。自上次呈现刻度后的值(以毫秒为单位),通常为16(取决于垃圾收集或GPU处理,根据我的经验)。所以基本上你的逻辑是这样说的,如果1349333576093 + 16大于20000L,那么输入if语句 - 看起来并不理想。对于我的项目,我使用Guava的秒表类来实现延迟 – mcw
@mcw该死!没有多少考虑,这是在stackoverflow上我接受了7个upvotes的接受答案,有什么更好的方法来做到这一点? – Lynob
什么是更好的方法来做什么? – mcw