在libGDX中绘制透明形状作为Actor?

Mar*_*c M 3 android libgdx

我试图在一个类中在屏幕上绘制一个简单的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);
    }

}
Run Code Online (Sandbox Code Playgroud)

P.T*_*.T. 5

你在混合上下文.SpriteBatch在开始之前结束你的ShapeRenderer.请参阅libgdx - Group.draw中的ShapeRenderer以错误的颜色呈现.但这可能不是问题所在.

您还需要启用混合.您可以在全局范围内执行此操作,也可以根据需要启用它(并禁用它).它应该由SpriteBatch上下文启用,但我不认为它启用了ShapeRenderer.

Gdx.graphics.getGL10().glEnable(GL10.GL_BLEND); // Or GL20
Run Code Online (Sandbox Code Playgroud)

渲染背景和Actors的顺序也会对透明度产生影响.

最后,您将不透明度设置为0,因此对象将完全不可见.这通常根本不起作用.(我假设你只是试图从当前的100%可见变化?)