我试图在一个类中在屏幕上绘制一个简单的rect并将其用作actor.
但无论我做什么,似乎没有选择让它透明.有谁知道如何做到这一点?
提前致谢!
public class AreaColorRect extends Actor {
public float opacity = 0.0f;
private Color shapeFillColor = new Color();
public Rectangle area;
public ShapeRenderer shapeRen;
public AreaColorRect(float x, float y, float w, float h) {
shapeRen = new ShapeRenderer();
this.area = new Rectangle(x, y, w, h);
}
@Override
public void draw(SpriteBatch batch, float parentAlpha) {
shapeRen.begin(ShapeType.Filled);
shapeRen.setColor(new Color(shapeFillColor.r, shapeFillColor.g, shapeFillColor.b,
0.0f));
shapeRen.rect(area.x, area.y, area.width, area.height);
shapeRen.end();
}
public void setShapeFillColor(float r, float g, float b) {
this.shapeFillColor = new Color(r, g, b, 1);
}
}
解决方法:
您还需要启用混合.您可以在全局范围内执行此操作,也可以根据需要启用它(并禁用它).它应该由SpriteBatch上下文启用,但我不认为它是为ShapeRenderer启用的.
Gdx.graphics.getGL10().glEnable(GL10.GL_BLEND); // Or GL20
渲染背景和Actors的顺序也会对透明度产生影响.
最后,您将不透明度设置为0,因此对象将完全不可见.这通常根本不起作用. (我假设你只是试图从当前的100%可见变化?)
标签:android,libgdx
来源: https://codeday.me/bug/20190725/1534560.html