我试图使用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
是我的代码中非常重要的一部分,但我必须进行大量的重构才能将其删除。其他人可以对这个问题有所了解吗?
答案 0 :(得分:6)
在Actor
课程中,方法act(float delta)
为act(delta)
的所有已注册Action
调用Actor
。因此,您必须确保在super.act(delta)
的每个子类中调用Actor
,以便调用act(delta)
中的Actor
方法。