两个位置之间的简单移动

为此,最好的解决方案是使用 actions。要向 Scene2D 中的演员添加新动作,请致电:

Action action = Actions.moveTo(x,y,duration);
actorObject.addAction(action);

其中 x 和 y 是目标位置,持续时间是以秒为单位的移动速度(float)。

如果你想停止这个动作(和它的演员)你可以通过调用:

actorObject.removeAction(action);

或者你可以通过调用删除所有操作:

actorObject.clearActions();

这将立即停止动作的运行。

moveTo 动作操作 actor 的 x 和 y 属性,因此当你将 actor 绘制到屏幕时,总是使用 getX() 和 getY()来绘制纹理。就像下面的例子一样:

public class MovingActor extends Actor {

    private Action runningAction;
    private float speed = 2f;

    public void moveTo(Vector2 location) {
       runningAction = Actions.moveTo(location.x, location.y, speed);
       this.addAction(runningAction);
    }

    public void stopAction() {
       this.removeAction(runningAction);
    }

    public void stopAllActions() {
       this.clearActions();
    }

    @Override
    public void draw(Batch batch, float parentAlpha){
        batch.draw(someTexture, getX(), getY());
    }
}