Comienzo creando una clase llamada «MenuTiles.java» para manejar mejor la animación de los cuadros. Cada cuadro utiliza la clase «Animation» de libGDX con solo dos texturas.
private final int tileSize;
private final Array<AnimatedMob> tiles;
public MenuTiles(Stage stage) {
super(stage);
tiles = new Array<>();
tileSize = RM.get().TA.findRegion("menu_tile").getRegionWidth() + 10;
}
Todas las imágenes del proyecto están empaquetadas en texturas usando el «TexturePacker» de LibGDX. En la línea 22, accedo al «Texture Atlas» (TA) en el Singleton RM (Resource Manager) para conseguir el tamaño de la textura de los cuadros. El propósito del (+10) al final es para añadir espacios entre los cuadros.
Como el código se adapta a cualquier orientación o tamaño de pantalla, tengo que calcular cuántos cuadros caben a lo largo y ancho.
int tempLargeDim;
int tempShortDim;
if (width > height) {
tempLargeDim = (int) (width * 70 / 100);
tempShortDim = (int) (height * 50 / 100);
} else {
tempLargeDim = (int) (height * 50 / 100);
tempShortDim = (int) (width * 70 / 100);
}
int totalLargeDimTiles = tempLargeDim / tileSize;
int totalShortDimTiles = tempShortDim / tileSize;
float calculatedLargeDim = totalLargeDimTiles * tileSize;
float calculatedShortDim = totalShortDimTiles * tileSize;
En las líneas 29-38, declaro variables para buscar el 70 por-ciento de la medida más larga y 50 de la medida más corta, ya sea horizontal o vertical.
En las líneas 40-41 calculo cuántos cuadros caben en el porcentaje del tamaño calculado.
Por último, calculo el tamaño final necesario para acomodar los cuadros a un 70 y 50 por-ciento de la pantalla.
Para lograr la animación en secuencia, utilice el total de los cuadros y réstele el valor 0.1f multiplicado por el índice del arreglo.
int totalTiles = (totalLargeDimTiles * 2) + (totalShortDimTiles * 2);
for (tileIndex = 0; tileIndex < totalTiles; tileIndex++)
tiles.add(new AnimatedMob(anim, totalTiles - (0.1f * tileIndex)));
Y asi se ve:
Próximo sábado, si Dios lo permite, publico el contenido dentro del rectángulo.


Deja una respuesta