【问题标题】:Libgdx create sequence action programmaticallyLibgdx 以编程方式创建序列操作
【发布时间】:2015-10-12 18:33:27
【问题描述】:

在我的 libGDX 应用程序中,我有一个演员需要以编程方式创建动作。

此刻,我正在添加具有递增延迟的 moveBy 操作,以获得所需的效果,但这非常低效。如下所示;

actor.addAction(sequence(delay(i * DELAY), moveBy(50, 50));

如果可能的话,我想以编程方式创建一个单一的序列动作,并根据需要向其中添加 moveBy 动作。然后我可以只调用一个动作,而不必不断添加非常无资源的动作。

我检查了文档,但找不到任何特定于我的特定需求的内容。

我在想一些类似(伪代码)的东西;

addPath(Vector2 path) {

    paths.add(path);
}

invokePathAction() {

    Action sequence = sequence();
    for all paths
        sequence.add(moveBy(path.x, path.y, TIME));

    addAction(sequence);
}

使用 libGDX 可以实现这样的事情吗?

【问题讨论】:

    标签: libgdx scene2d


    【解决方案1】:

    当然——SequenceAction 类中有 addAction 方法

        MoveToAction action1 = new MoveToAction();
        action1.setPosition(0, 0);
        action1.setDuration(2);
    
        MoveToAction action2 = new MoveToAction();
        action2.setPosition(-500, 0);
        action2.setDuration(2);
    
        ...
    
        SequenceAction sequence = new SequenceAction();
    
        sequence.addAction(action1);
        sequence.addAction(action2);
    
        ...
    
        actor.addAction(sequence);
    

    如果您想清除所有操作并再次拥有“空”序列,您可以调用

        sequence.reset();
    

    【讨论】:

    • 不知道我是怎么错过的!至少可以说很尴尬!
    • 所有这些都是继承的方法:)
    • 是的,当我第一次尝试时,我正在做Action action = sequence();,因此没有看到addAction,因为我没有正确地进行类型转换!再次感谢:)
    猜你喜欢
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-11
    • 1970-01-01
    • 2013-11-29
    • 1970-01-01
    相关资源
    最近更新 更多