暂停并继续对Libgdx中的actor进行操作

时间:2018-01-21 12:56:18

标签: java libgdx

我正在尝试使用Libgdx。 这就是我想要实现的目标,

在Actor上定义一个动作,当actor正在执行动作时,按钮点击我们应该可以从同一个位置开始和停止动作。

我尝试了这个stackoverflow answer但是在再次开始动作之后,演员移动得比之前更快,因为最初我们已经设定了完​​成动作的持续时间,并且由于剩余的时间更少,所以它运行得更快。

你能帮帮忙吗?我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

尝试直接从Actor#actions数组中删除actor中的操作,然后在另一次单击时将其添加回来。例如:

final Actor actor = // ... initialize your actor;
final Action action = Actions.forever(Actions.rotateBy(360f, 3f, Interpolation.bounceOut));
actor.addAction(action);

actor.addListener(new ClickListener() {
    @Override
    public void clicked(InputEvent event, float x, float y) {
        Array<Action> actions = actor.getActions();
        if (actions.contains(action, true)) {
            // removing an action with Actor#removeAction(Action) method will reset the action,
            // we don't want that, so we delete it directly from the actions array
            actions.removeValue(action, true);
        } else {
            actor.addAction(action);
        }

    }
});