Как мне сделать всплывающее окно с Scene2D?


13

У меня экран главного меню с логотипом и кучей кнопок. Когда нажимается кнопка входа в систему, я выскакиваю диалог с просьбой ввести имя пользователя и пароль.

Это отлично работает, кроме «всплывающих». На данный момент новое диалоговое окно просто меняет все, но я бы хотел расположить его поверх текущей сцены.

Я только учусь Scene2D.

Ответы:


10

Диалог лучше подходит для модальных всплывающих окон и включает в себя таблицу «кнопка» и «содержимое» уже в окне (как говорят документы ). Вы можете получить эти таблицы с помощью getButtonTable () или getContentTable ().

Диалог облегчает работу с всплывающими окнами. Например, вот диалог подтверждения:

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();

Вы можете использовать другие объекты, скажем, для параметров Да / Нет / Отмена.


Возможно ли, чтобы диалоговое окно автоматически устанавливало его размер в зависимости от его содержимого? Похоже, что это слишком мало с примером выше ..
Озеро

Я предполагаю, что это возможно, вызывая метод pack () :)
Озеро

0

Хорошо, так как никто не ответил, я опубликую свое решение.

При добавлении актеров на сцену, а не делать:

stage.add(actor);

Который добавляет ячейку с указанным актером, я сделал следующее:

stage.addActor(actor);

Тогда я был свободен перекрывать актеров и перемещать / масштабировать / вращать их с помощью анимации движения. Единственное, что я сейчас вижу в этом, - это абсолютное позиционирование виджетов.

Для их размещения вам необходимо позвонить:

actor.setPosition(x, y);

Так что это может быть немного сложнее при работе с устройствами Android с различными пропорциями и разрешениями.


Абсолютная позиция не является большой проблемой, если вы устанавливаете статический размер мира и используете область просмотра со своей сценой. Он будет обрабатывать масштабирование, растяжение и другие неясные свойства работы с соотношениями сторон и разрешениями.
nhydock
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.