我想在特定的时间间隔内在游戏中实现落叶。 游戏开始10秒后,叶片必须掉落。然后叶片必须在20秒后掉落,依此类推。
我有这种方法用于数组的落叶;
private void updateFalls(float delta) {
for (Leaf l : leaves)
l.moveLeavesDown(delta);
spawnleaves();
}
是否可以使用计时器类?是否可以在计时器内以固定间隔调用此方法? 任何帮助将不胜感激。
答案 0 :(得分:1)
您可以这样使用Timer:
Timer timer=new Timer();
timer.scheduleTask(new Timer.Task() {
@Override
public void run() {
spawnLeaf();
}
},10,20); // --> 10 is your first delay and 20 is interval in sec.
我正在考虑将Leaf视为Sprite
,但它可能是Image
或任何其他Entity
。
这是我的spawnLeaf
方法:
Array<Sprite> leaves=new Array<Sprite>();
private void spawnLeaf(){
Sprite sprite=new Sprite(texture);
sprite.setPosition(MathUtils.random(Gdx.graphics.getWidth()),Gdx.graphics.getHeight());
leaves.add(sprite);
}
绘制并定位所有叶子的更新部分
spriteBatch.begin();
Iterator<Sprite> iter = leaves.iterator();
while (iter.hasNext()) {
Sprite spr = iter.next();
spr.draw(spriteBatch);
spr.setY(spr.getY()-50f*Gdx.graphics.getDeltaTime());
if (spr.getY()<0)
iter.remove();
}
spriteBatch.end();
Timer
有clear()
和stop()
方法,有助于删除所有计划任务并分别停止可能重新开始的计时器。