2014-02-26 66 views
4

我想使用Action FadeOut淡出演員。但是,我發現沒有任何操作對我的對象起作用。我的類的層次結構是這樣的:LibGDX Scene2D:對於組內的演員來說,動作完全不起作用

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(奈特的父母)的行爲也不起作用。我最好的猜測是,包裝演員在Grouprenderactions這些演員無效。 KnightGroup是我的代碼中非常重要的一部分,但我必須做很多重構才能將它取出。其他人可以解釋這個問題嗎?

+0

你打電話給stage.act(delta)嗎? moveBy/moveTo Action是否工作? – Springrbua

+0

是的,stage.act(delta)被調用。除了行動之外,一切都有效moveTo動作也不起作用。 –

+2

在act(delta)的玩家類中,你叫super.act(delta)嗎?這是否行動(三角洲)回到Actor.act(浮動增量),因爲Action.act(增量)被稱爲內Actor.act(增量) – Springrbua

回答

6

Actor分類中,方法act(float delta)對此Actor的所有註冊Action s調用act(delta)。因此,您必須確保在Actor的每個子類中調用super.act(delta),以便調用Actor中的act(delta)方法。