2013-08-28 9 views
7

Attualmente sto facendo un gioco utilizzando la libreria Libgdx e al momento ho raggiunto un piccolo ostacolo.Ridimensionamento della finestra di Libgdx: mantenimento del rapporto di aspetto

Ho disabilitato la possibilità di ridimensionare attualmente, nella mia classe Main.java nel progetto desktop.

LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration(); 
    cfg.resizable = false; 

Mi chiedo se esiste un modo semplice per ridimensionare la finestra mantenendo le proporzioni. (Come quando si sposta + ridimensiona)

Quali sono le mie opzioni? :)

risposta

2

quella funzione non ti dà la possibilità di mantenere le proporzioni o anche qualcosa di quello che pensi. Semplicemente disabilita la possibilità di ridimensionare lo schermo nell'applicazione desktop.

Si prega di dare un'occhiata al wiki libGDX soprattutto la pagina Scene2D. Dai un'occhiata allo spettacolo Viewport dallo Stage. Ha spiegato come si mantengono le proporzioni con la libGDX corrente. Ci sono tutorial che spiegano in un modo diverso con l'aiuto di una risoluzione virtuale e il metodo di ridimensionamento dello schermo. È obsoleto!

dal wiki

Questo esempio utilizza anche una dimensione fase fissa con "barre nere" su entrambi i lati , questa volta utilizzando glViewport. Innanzitutto, la dimensione dello stage di 800x480 è ridimensionata per adattarsi alle dimensioni dello schermo utilizzando la classe Scaling. Il risultato è utilizzato per configurare glViewport, che cambia quale parte della schermata OpenGL utilizzerà. Infine, setViewport passa la posizione della vista e la dimensione. Il risultato è lo stesso dell'ultimo esempio, il palcoscenico ha "barre nere" necessarie per mantenere le proporzioni, ma nessun disegno può produrre all'esterno della finestra.

public void resize (int width, int height) { 
     Vector2 size = Scaling.fit.apply(800, 480, width, height); 
     int viewportX = (int)(width - size.x)/2; 
     int viewportY = (int)(height - size.y)/2; 
     int viewportWidth = (int)size.x; 
     int viewportHeight = (int)size.y; 
     Gdx.gl.glViewport(viewportX, viewportY, viewportWidth, viewportHeight); 
     stage.setViewport(800, 480, true, viewportX, viewportY, viewportWidth, viewportHeight); 
} 

saluti

Problemi correlati