在Libgdx中重复序列操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Libgdx中重复序列操作相关的知识,希望对你有一定的参考价值。

我有一个名为箭头的演员,我想重复一个序列动作。

此箭头指向一个演员,如果单击该箭头,箭头应该淡出。

这是我的代码:

Action moving = Actions.sequence(
                (Actions.moveTo(arrow.getX(), arrow.getY() - 35, 1)),
                (Actions.moveTo(arrow.getX(), arrow.getY(), 1)));
arrow.addAction(moving);
actor.addListener(new ClickListener() {
            @Override
            public void clicked(InputEvent event, float x, float y) {
                arrow.addAction(Actions.fadeOut(1));
            }
        });

代码工作正常,但我想重复'移动'动作单击动画演员。

我在这个问题Cannot loop an action. libGDX中读到了关于RepeatAction但我不知道如何申请

答案

你可以在这种情况下使用RepeatAction,使用Actions.forever()

final Action moving = Actions.forever(Actions.sequence(
        (Actions.moveTo(arrow.getX(), arrow.getY() - 35, 1)),
        (Actions.moveTo(arrow.getX(), arrow.getY(), 1))));
arrow.addAction(moving);
actor.addListener(new ClickListener() {
    @Override
    public void clicked(InputEvent event, float x, float y) {
        // you can remove moving action here
        arrow.removeAction(moving);
        arrow.addAction(Actions.fadeOut(1f));
    }
});

如果你想在淡出后从arrow中删除Stage,你可以使用RunnableAction

arrow.addAction(Actions.sequence(
        Actions.fadeOut(1f), Actions.run(new Runnable() {
            @Override
            public void run() {
                arrow.remove();
            }
        }))
);

以上是关于在Libgdx中重复序列操作的主要内容,如果未能解决你的问题,请参考以下文章

LibGDX:如何从主游戏屏幕重复显示/隐藏覆盖弹出菜单

libgdx open gles 2.0 模板 alpha 遮罩

用片段替换某些东西

在tablayout片段之间进行通信[重复]

如何创建片段以重复变量编号中的代码行

append() 在这个代码片段中是如何工作的?与特定变量混淆[重复]