Dibujo de una forma transparente en libGDX como actor?

Estoy tratando de dibujar un rect simple en la pantalla en una clase y utilizarlo como actor.

Pero lo que hago, parece que no hay opción para dibujarlo transparente. ¿Alguien sabe como hacer esto? ¡Gracias por adelantado!

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); } } 

Estás mezclando contextos. Termina tu SpriteBatch antes de iniciar el ShapeRenderer . Vea libgdx – ShapeRenderer en Group.draw hace que el color sea incorrecto . Sin embargo, esto podría no ser el problema.

También es necesario activar la mezcla. Sólo puede hacer esto una vez globalmente, o habilitarlo como sea necesario (y deshabilitarlo). Debe ser habilitado por el contexto SpriteBatch , pero no creo que esté habilitado para ShapeRenderer .

 Gdx.graphics.getGL10().glEnable(GL10.GL_BLEND); // Or GL20 

La orden que usted hace su fondo y actores también hace una diferencia para la transparencia.

Por último, ha establecido la opacidad a 0, por lo que el objeto será completamente invisible. Eso generalmente no hace nada en absoluto. (Supongo que sólo está tratando de obtener un cambio de la actual 100% visible?)

Lo siento por cavar esto. Sin embargo, dado que estás etiquetando Android, pensé que sólo podría compartir mis experiencias. Hace poco pasé casi 4 horas en un problema, donde la mezcla alfa no funcionaba, ya que no es para ti.

Resultó que libgdx ' AndroidApplicationConfiguration utiliza 0 bit para el canal alfa como predeterminado. Si este es el caso para usted, también, podría valer la pena cambiarlo a algo más sensato antes de initialize() su aplicación.

Sólo decidí usar Scene2d para mi juego y llegué a la misma pregunta: ¿cómo usar un rectángulo como actor y dibujarlo en la pantalla?

Entonces encontré esta pieza de documentación en el wiki libgdx (Por defecto, Scene2d tiene un SpriteBatch que maneja el dibujo de los actores)

Si un actor necesita realizar el dibujo de forma diferente, como con un ShapeRenderer, el lote debe finalizar y, a continuación, comenzar de nuevo al final del método. Por supuesto, esto hace que el lote para ser enjuagado, por lo que debe utilizarse juiciosamente. Las matrices de transformación y proyección del Lote se pueden utilizar:

 private ShapeRenderer renderer = new ShapeRenderer(); public void draw (Batch batch, float parentAlpha) { batch.end(); renderer.setProjectionMatrix(batch.getProjectionMatrix()); renderer.setTransformMatrix(batch.getTransformMatrix()); renderer.translate(getX(), getY(), 0); renderer.begin(ShapeType.Filled); renderer.setColor(Color.BLUE); renderer.rect(0, 0, getWidth(), getHeight()); renderer.end(); batch.begin(); } 
  • Uso de SQLite desde libGDX en Android
  • ¿Libgdx es utilizable para juegos 2d?
  • LibGdx Object Pool para muchos objetos de la misma clase padre
  • ¿Cómo puedo hacer algo cada segundo?
  • LibGDX 1.5 girando sprite alrededor de su centro
  • Servicios de juegos de Google Play Configuración del proyecto LibGDX con los últimos juegos de BaseGameUtils
  • Fuentes TrueType en libGDX
  • Luz de punto libgdx no funciona en la malla generada
  • LibGDX dentro de la actividad de Android
  • ¿Cuándo usar ShapeRenderer, Mesh + SpriteBatch, Box2D y Scene2D en Libgdx?
  • Libgdx SpriteBatch render a la textura
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.