Aprovechando la librería de Scene2d.ui usaré «Label» y «Table» para codificar una pequeña ventana para mostrar información importante en vivo para facilitar y diagnosticar el proceso.
Para esto, necesito un arreglo de «Labels», un «Table» y utilizar el «StringBuilder».
private final StringBuilder stringBuilder;
private final Label[] labels;
private final Table table;
Proximo, iniciar todo en el constructor. Java trae la clase de «StringBuilder», pero estoy usando la de LibGDX.
stringBuilder = new StringBuilder();
labels = new Label[3];
table = new Table();
table.pad(20).setFillParent(true);
table.defaults().padBottom(-1).fill();
El primer texto en la tabla será el título del proyecto. Creo nuevo «Label», se añade a la tabla y se llama al método «row» para una nueva línea.
Label label = new Label("THEOLIUM BY QUAGEM", skin, "Style2");
table.add(label);
table.row();
Información de la resolución actual (RES). Además de leer la resolución al inicio, este texto también se actualiza cada vez que el dispositivo cambia de orientación.
setResolutionString();
labels[0] = new Label(stringBuilder, skin, "Style1");
table.add(labels[0]).row();
private void setResolutionString() {
stringBuilder.setLength(0);
stringBuilder.append("RES: ");
stringBuilder.append(Math.round(mStage.getWidth()));
stringBuilder.append(" X ");
stringBuilder.append(Math.round(mStage.getHeight()));
}
Densidad en píxeles de la pantalla (DEN):
setDensityString();
labels[1] = new Label(stringBuilder, skin, "Style1");
table.add(labels[1]).row();
private void setDensityString() {
stringBuilder.setLength(0);
stringBuilder.append("DEN: ");
stringBuilder.append(Gdx.graphics.getDensity());
}
Para actualizar resolución y densidad solo necesito hacerlo cuando la pantalla cambia de tamaño u orientación, por eso añado este código en el modulo de «resize»:
public void resize() {
setResolutionString();
labels[0].setText(stringBuilder);
setDensityString();
labels[1].setText(stringBuilder);
}
Por ultimo, «Frames Per Second» (FPS) y conteo de entidades:
setFPSString();
labels[2] = new Label(stringBuilder, skin, "Style2");
table.add(labels[2]).row();
private void setFPSString() {
stringBuilder.setLength(0);
stringBuilder.append("FPS: ");
stringBuilder.append("[");
stringBuilder.append(Gdx.graphics.getFramesPerSecond());
stringBuilder.append("]-[");
stringBuilder.append(getActorCount());
stringBuilder.append("]");
}
Para actualizar los (FPS) en vivo, añado este código en el método de «render»:
public void render() {
setFPSString();
labels[2].setText(stringBuilder);
}
Y asi se ve:


Deja una respuesta