libgdx - 如何处理与时间相关的事件?

时间:2014-01-15 00:43:30

标签: android libgdx

我开始在libgdx开发游戏,我想知道以下情况的最佳做法是什么。我正在尝试做两件事:将菜单(精灵)移动到位,然后将相机平移到播放器精灵。我完成这些事情的想法是在render()函数中有一个'action_stack'ArrayList。 ArrayList将包含“Action”实例。每个Action实例都有一个step()函数,该函数将被覆盖。在render()函数中,我将迭代action_stack,并触发每个元素'step()函数。因此,为了完成将菜单移动到位,我将创建类:

public class MenuAnim1 implements Action {

    private int targetX;
    private int targetY;
    private Sprite menu;

    public MenuAnim1() {
        //set initial sprite and position
    }

    public Step() (
        //move this.menu towards targetX and targetY
            //draw the sprite
        //if not at target position, do nothing
        //if at target position, remove this object from action_stack
    }
}

...并将实例放入action_stack

MenuAnim1 menuAnim1 = new MenuAnim1();
action_stack.add(menuAnim1);

很抱歉,如果我的Java不好,我对它并不是很熟悉。无论如何,我的问题是:这是不是很好的做法?人们通常做什么?是否有更好的方法来完成我上面描述的内容?

1 个答案:

答案 0 :(得分:5)

我从未使用Action,但您的想法很好。如果您希望它们与时间相关(因此fps独立),请务必使用自上一帧到目前的时间,也称为 delta deltaTime 。你可以这样得到它:

Gdx.graphics.getDeltaTime();

所以,为了让你的动作移动精灵,例如,向右移动,这就可以了:

speed = 10; //It will move 10 units per second.
delta = Gdx.graphics.getDeltaTime();
menu.translateX(speed*delta);

Sprite#translateX