如何在LibGDX中暂停演员的动作?

时间:2014-08-26 17:12:58

标签: java android opengl-es libgdx scene2d

我向我的演员添加了以下动作:

this.addAction(sequence(delay(0.5f), alpha(1, 2), delay(2), alpha(0, 2)));

是否有一种简单的方法可以暂停此动画,然后在单击按钮时继续播放?

2 个答案:

答案 0 :(得分:2)

如果你的actor只是在运行动作,我建议你停止调用actor的act()方法。如果需要,扩展Actor以设置开关。

public void act(){
  if(mUpdateAnimation){
     this.act(delta)
  }
}

答案 1 :(得分:0)

虽然上面的答案被接受,但是当我尝试上述解决方案时,演员的动作比以前更快。相反,当我们不希望演员执行任何动作时,我们可以做的是删除动作,稍后再添加它。

尝试直接从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);
        }

    }
});

感谢@ Arctic45采用这种方法。可在此stackoverflow link

上找到更多内容