两个位置之间的简单移动
为此,最好的解决方案是使用 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());
}
}