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(); } 
  • ¿Cómo mostrar el texto vectorizado usando libgdx?
  • Java.lang.NoClassDefFoundError (libgdx)
  • Los cambios en el código no se reflejan cuando ejecuto el proyecto Libgdx en Android
  • Cambiar el tamaño de la fuente en la piel
  • Libgdx se bloquea en Android
  • Programas funcionan bien con LibGDX -desktop pero no LibGDX - Android?
  • LibGDX - Shader trabajando en el escritorio pero no en Android
  • OpenGL 2.0 o superior con la extensión FBO es obligatorio LibGDX Error
  • Tomar la captura de pantalla en libgdx
  • Android GDX Box2D forma de triángulo
  • ¿Cómo cambiar entre el modo vertical y el modo horizontal con libGDX?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.