【发布时间】:2014-03-28 19:35:19
【问题描述】:
我正在尝试使用 Action FadeOut 将 Actor 淡出。但是,我发现 no 操作对我的对象根本不起作用。我的类的层次结构是这样的:
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(Knight 的父级)中的操作也不起作用。我最好的猜测是,将演员包装在Group 中会使render 和actions 中的那些演员无效。 KnightGroup 是我代码中非常重要的部分,我必须进行大量重构才能将其删除。其他人可以解释一下这个问题吗?
【问题讨论】:
-
你调用 stage.act(delta) 吗? moveBy/moveTo 操作是否有效?
-
是的,stage.act(delta) 被调用。一切正常,除了行动。 moveTo 操作也不起作用。
-
在 act(delta) 的 Players 类中,你调用 super.act(delta) 吗?那个 act(delta) 会回到 Actor.act(float delta),因为 Action.act(delta) 在 Actor.act(delta) 内部被调用
-
就是这样!我在类层次结构的最顶层缺少一个 super.act() 。在我添加它之后,事情按预期工作。非常感谢你,伙计!
-
我将其添加为答案,以便您将其标记为已解决。
标签: libgdx action actor scene2d