LibGDX Scene2D:对于组内的actor,动作根本不起作用

时间:2014-02-26 06:27:45

标签: libgdx action actor scene2d

我试图使用Action FadeOut淡化Actor。但是,我发现没有任何动作对我的对象起作用。我的类的层次结构如下:

Actor -> MoveableObject -> Knight

Stage -> KnightGroup (Group) -> Knight

我的骑士演员的动作根本不起作用。但是,我的KnightGroup小组的操作有效。这是我的骑士的代码:

public class Knight extends Players {
public Knight() {
    setWidth(96);
    setHeight(96);
    setPosition(100, 90);

    //Doesn't work
    AlphaAction action = new AlphaAction();
    action.setAlpha(0f);
    action.setDuration(1f);
    addAction(action);

    //Doesn't work
    addAction(fadeOut(1f));
    addAction(Actions.scaleBy(1f, 1f));
}

@Override
public void act(float delta){
    super.act(delta);
}


@Override
public void draw(Batch batch, float parentAlpha) {
    batch.setColor(getColor().r, getColor().g, getColor().b, getColor().a);
    batch.draw(animation[currentState], getX(), getY(), getWidth(), getHeight());
}
}

我不能为我的生活找出问题所在。 MoveableObject(骑士的父母)中的行动也不起作用。我最好的猜测是,Group中的演员将render这些演员的actions无效。虽然KnightGroup是我的代码中非常重要的一部分,但我必须进行大量的重构才能将其删除。其他人可以对这个问题有所了解吗?

1 个答案:

答案 0 :(得分:6)

Actor课程中,方法act(float delta)act(delta)的所有已注册Action调用Actor。因此,您必须确保在super.act(delta)的每个子类中调用Actor,以便调用act(delta)中的Actor方法。