Android libgdx resolución de pantalla grande
Pregunta
¿Cómo puedo soportar (hacer un algoritmo) para libgdx para respaldar la resolución de pantalla múltiple?Hice que mi aplicación trabaje en HTC Tattoo usando si hay declaraciones con parámetros como:
if (Gdx.input.getX()==40) {
¿Qué es un buen algoritmo para hacer de este trabajo en pantallas más grandes? Probé esto, pero sin ningún resultado:
publis static int translatex() {
float p = (float)Gdx.graphics.getHeight()*340;
return (int) p*Gdx.input.getX();
}
340 es la base X (la resolución X en mi teléfono) utilizada por mí en el tatuaje HTC. Entonces ... ¿cómo puedo hacer una función para respaldar las pantallas grandes con valores absolutos?No quiero cambiar las declaraciones if-if-
Solución
es bastante fácil.Básicamente, construye todo su programa para su resolución nativa, pero en todo lo relacionado con el posicionamiento y el tamaño de la textura tienen algo así:
private void resize()
{
float x = Gdx.graphics.getWidth();
float y = Gdx.graphics.getHeight();
float changeX = x / assumeX; //being your screen size that you're developing with
float changeY = y / assumeY;
position = new Vector2(position.x * changeX, position.y * changeY);
width = startWidth * changeX;
height = startHeight * changeY;
bounds = new Vector2 (position.x, (Gdx.graphics.getHeight() - position.y) - height);
}
Básicamente lo que está haciendo es tomar todos los objetos generados y ejecutarlo a través de algo que aumenta / disminuye dependiendo del cambio en los valores X / Y en su resolución.Cuanto más es de lo nativo, más grande será.Cuando la verificación de algo está en algún lugar o ponga algo en alguna parte, siempre códíelo como la resolución deseada, pero ejecutela a través de una función de cambio de tamaño antes de mostrarla o delejala interactuar con el resto de su programa.
Otros consejos
Consulte una solución más elegante en http://www.java-gaming.org / index.php? Topic= 25685.0 (también vea el comentario de Nate a esa solución).
Además, si usa scene2d
, tenga en cuenta que actualmente (libgdx 0.9.6) stage.setViewport
método debe tener esta funcionalidad, pero realmente no se comporta como uno esperaría.
Actualizar: setviewport fue arreglado, por lo que esto funciona igual de esperado.