Refacturación

Corrigiendo las consecuencias de reusar código que no está diseñado para el propósito. En la prueba de colores, se reciclo la clase PixMapActor() que crea y dispone una textura por instancia. Esto hace una textura por cada color y es totalmente innecesario.

Ahora solo se crea una textura a nivel de la clase y se recicla por cada color.  

private TextureRegion textureRegion;

También ahora solo se muestran 16 colores.

int flux = 0;
int totalColors = 16;

colorTest = new Array<>(false, totalColors);

for (ObjectMap.Entry<String, Color> color : Colors.getColors()) {
     if (flux++ >= totalColors) break;
     colorTest.add(new BaseActor(color.value));
}

for (BaseActor baseActor : colorTest) stage.addActor(baseActor);

El método setColorSprites() calcula el tamaño de la textura y aplica la misma a todos los actores. Cada actor se encarga de aplicar color a la textura.

private void setColorSprites() {

     int height = Math.round(stage.getHeight());
     int width = Math.round(stage.getWidth() / colorTest.size);

     Pixmap pixmap = new Pixmap(width, height, Pixmap.Format.RGB565);
     pixmap.setColor(Color.WHITE);
     pixmap.fillRectangle(0, 0, width, height);

     if (textureRegion != null) textureRegion.getTexture().dispose();

     textureRegion = new TextureRegion(new Texture(pixmap));

     textureRegion.getTexture().setFilter(
          Texture.TextureFilter.Nearest,
          Texture.TextureFilter.Nearest);

     for (BaseActor baseActor : colorTest) baseActor.setTextureRegion(textureRegion);

     pixmap.dispose();
}

Con esa alteración se reduce el uso de memoria a una pizca comparado al código anterior.

Prueba de Sistema.

Usando:

Líneas importantes:

La variable testRunTime decide cuanto tiempo cada prueba dura.

private final float testRunTime;
testRunTime = 4;

La variable fontMonoSpace hace conveniente tener el tamaño de la letra y no importa si guardas el valor altura o ancho porque en una tipografía Monoespacio todo carácter ocupa el mismo espacio.

Continue reading →