我试图在一个类中在屏幕上绘制一个简单的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)
你在混合上下文.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%可见变化?)
| 归档时间: |
|
| 查看次数: |
7242 次 |
| 最近记录: |