libgdx actor - 未绘制alpha动作

时间:2014-12-10 15:31:00

标签: libgdx action actor alpha

我有一个带有fadeOut / fadeIn动作的图像。像这样:

public void fadeInAndOut() {
    AlphaAction actionFadeOut = new AlphaAction();
    actionFadeOut.setAlpha(0f);
    actionFadeOut.setDuration(2f);
    AlphaAction actionFadeIn = new AlphaAction();
    actionFadeIn.setAlpha(1f);
    actionFadeIn.setDuration(2f);

    this.addAction(Actions.sequence(actionFadeOut, Actions.delay(2f), actionFadeIn));
}

但调用此方法时没有任何反应。

我的抽奖方法是:

@Override
public void draw(Batch batch, float parentAlpha) {
    super.draw(batch, parentAlpha);
    batch.draw(objectImage, getX(), getY(), getWidth() * getScaleX(),
            getHeight() * getScaleY());
}

如何使图像的alpha值有效?

提前致谢!

2 个答案:

答案 0 :(得分:6)

正如scene2d wiki所述,我们需要覆盖 draw ,如下所示:

@Override
public void draw(Batch batch, float parentAlpha) {
    Color color = getColor();
    batch.setColor(color.r, color.g, color.b, color.a * parentAlpha);
    batch.draw(objectImage, getX(), getY(), getWidth() * getScaleX(),
            getHeight() * getScaleY());
    batch.setColor(color.r, color.g, color.b, 1f);
}

瞧...

-----更新-----

我必须在绘制下一行后添加:

batch.setColor(color.r, color.g, color.b, 1f);

否则在某些情况下,舞台颜色也会受到影响,而不仅仅是演员。

希望有所帮助

答案 1 :(得分:1)

为了使图像的alpha值有效,您需要更改spriteBatch的颜色,如下所示:

Color color = batch.getColor();
batch.setColor(color.r, color.g, color.b, parentAlpha); //Sets the alpha of the batch without changing the color

batch.draw(...);