我有一个带有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值有效?
提前致谢!
答案 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(...);