¿Cómo hago una ventana emergente con Scene2D?

13

Tengo una pantalla de menú principal con un logotipo y un montón de botones. Cuando se presiona el botón Iniciar sesión, aparece un cuadro de diálogo solicitando un nombre de usuario y contraseña.

Esto funciona bien, aparte de la "ventana emergente". En este momento, el nuevo cuadro de diálogo solo cambia todo, pero me gustaría posicionarlo sobre la escena actual.

Solo estoy aprendiendo Scene2D.

Gibbo
fuente

Respuestas:

10

El cuadro de diálogo es más adecuado para ventanas emergentes modales e incluye una tabla de "botones" y "contenidos" que ya está en la ventana (como dicen los documentos ). Puede tomar estas tablas con getButtonTable () o getContentTable ().

El cuadro de diálogo facilita el trabajo con ventanas emergentes. Por ejemplo, aquí hay un diálogo de confirmación:

Dialog dialog = new Dialog("Warning", skin, "dialog") {
    public void result(Object obj) {
        System.out.println("result "+obj);
    }
};
dialog.text("Are you sure you want to quit?");
dialog.button("Yes", true); //sends "true" as the result
dialog.button("No", false);  //sends "false" as the result
dialog.key(Keys.Enter, true); //sends "true" when the ENTER key is pressed
dialog.show();

Puede usar otros objetos para, por ejemplo, las opciones Sí / No / Cancelar.

usuario212
fuente
¿Es posible que el cuadro de diálogo establezca su tamaño automáticamente en función de su contenido? Parece que es demasiado pequeño con el ejemplo anterior ..
Lago
Supongo que es posible llamando al método pack () :)
Lake
0

Bien, ya que nadie ha respondido, publicaré mi solución.

Al agregar actores al escenario, en lugar de hacerlo:

stage.add(actor);

Lo que agrega una celda con el actor dado, hice lo siguiente:

stage.addActor(actor);

Entonces era libre de superponer actores y moverlos / escalarlos / rotarlos mediante interpolaciones. Lo único que probablemente veo actualmente con esto es el posicionamiento absoluto de Widgets.

Para posicionarlos debe llamar:

actor.setPosition(x, y);

Por lo tanto, podría ser un poco difícil cuando se trata con dispositivos Android de diferentes relaciones de aspecto y resoluciones.

Gibbo
fuente
la posición absoluta no es un gran problema siempre que establezca un tamaño mundial estático y use una ventana gráfica con su escenario. Manejará la escala, el estiramiento y otras propiedades oscuras de tratar con relaciones de aspecto y resoluciones.
nhydock