Libgdx can';t在同一操作序列中运行2个可运行操作

Libgdx can';t在同一操作序列中运行2个可运行操作,libgdx,runnable,Libgdx,Runnable,我试图在相同的操作序列中运行2个Runnable操作,但我得到一个错误,即它无法解析构造函数SuquenceAction。。不确定我是否错过了一些完全明显的东西,只是视力不好,但似乎不能按顺序运行2个可运行的操作。解决办法是什么?如果我遗漏了一个语法错误,我诚挚的道歉 错误: 未找到SequenceAction的合适构造函数(ColorAction、RunnableAction、ColorAction、ColorAction、ColorAction、RunnableAction、ColorAct

我试图在相同的操作序列中运行2个Runnable操作,但我得到一个错误,即它
无法解析构造函数SuquenceAction
。。不确定我是否错过了一些完全明显的东西,只是视力不好,但似乎不能按顺序运行2个可运行的操作。解决办法是什么?如果我遗漏了一个语法错误,我诚挚的道歉

错误:

未找到SequenceAction的合适构造函数(ColorAction、RunnableAction、ColorAction、ColorAction、ColorAction、RunnableAction、ColorAction)

ColorAction colorToBlack= new ColorAction();
                    colorToBlack.setDuration(0.2f);
                    colorToBlack.setEndColor(Color.BLACK);
                    colorToBlack.setTime(0.2f);

                    ColorAction colorToWhite = new ColorAction();
                    colorToWhite.setDuration(0.2f);
                    colorToWhite.setEndColor(Color.WHITE);
                    colorToWhite.setTime(0.2f);

                    ColorAction wait = new ColorAction();
                    wait.setDuration(2.5f);
                    wait.setTime(2.5f);

                    ColorAction colorToBlack2= new ColorAction();
                    colorToBlack2.setDuration(0.2f);
                    colorToBlack2.setEndColor(Color.BLACK);
                    colorToBlack2.setTime(0.2f);

                    ColorAction colorToWhite2 = new ColorAction();
                    colorToWhite2.setDuration(0.2f);
                    colorToWhite2.setEndColor(Color.WHITE);
                    colorToWhite2.setTime(0.2f);

                SequenceAction sq = new SequenceAction(colorToBlack,Actions.run(new Runnable() {
                    @Override
                    public void run() {

                    }
                }),colorToWhite,wait,colorToBlack2,Actions.run(new Runnable() {
                    @Override
                    public void run() {

                    }
                }),colorToWhite2);

正如您在错误消息中看到的,没有找到构造函数。这是因为
SequenceAction
类中没有可以执行7个操作的构造函数。最大值为5

这是JavaDoc

解决方法是,创建
SequenceAction
对象并按顺序逐个添加操作

SequenceAction sq = new SequenceAction();

sq.addAction(colorToBlack);
sq.addAction(Actions.run(() -> {/**Using lambda expression, it's similar to New Runnable() { run() } **/} ));
sq.addAction(colorToWhite);
sq.addAction(wait);
sq.addAction(colorToBlack2);
sq.addAction(Actions.run(() -> {}));
sq.addAction(colorToWhite2);
就像您查看LibGdx代码一样,在构造函数中,他们所做的是

public SequenceAction (Action action1, Action action2, Action action3, Action action4, Action action5) {
        addAction(action1);
        addAction(action2);
        addAction(action3);
        addAction(action4);
        addAction(action5);
}
这和我给你的很像


我希望有帮助:)

谢谢!没有想到。哦,使用lambda表达式安全吗?不确定libgdx如何处理较新的Java功能。别担心,这是Java8的特性。我到处都用Lambda。您所做的只是传入一个使用Lambda样式创建的可运行对象。LibGDX.info上有一个可运行的RunnableAction教程/示例,请在此处查看: