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!
- Libgdx o playn?
- LIBGDX Entrada - Número de dedos que tocan la pantalla
- LibGDX en la aplicación de compras y Gradle
- LibGDX pausa en funcionamiento durante unos segundos
- Cómo añadir un botón "rate my app" en el juego libgdx
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); } }
- Reproducción de gif animado con libgdx
- LibGDX - Selector de color
- En libgdx en Android, ¿cómo puedo guardar el estado del juego en caso de que se muera la aplicación?
- ¿Cómo obligo a eclipse a actualizar el apk en mi dispositivo de hardware con cada compilación?
- ¿Cómo determinar en qué plataforma se ejecuta la aplicación actual en LibGDX?
- La configuración de libGDX me permite usar Java 8 que se bloquea en Android
- Cambiar de AndEngine a libgdx - qué saber?
- Dibujo de un gradiente en Libgdx
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 enlazar Android TextView a evento Click con MvvmCross
- ¿Cómo se agrega un carácter de nueva línea en una cadena en índices específicos?