Вторник, 12.12.2017, 09:22
Поиск
Никнэйм
Сертификат на никнейм Olelucoye, зарегистрирован на Тимофеев Константин Михайлович
Зарегистрируй свой никнейм
Обратная связь
olelucoye.tk@yandex.ru
Реклама AdSense
Реклама
Друзья сайта
  • Лига медицинского права
  • Гостиница "Зай"
  • FAQ по системе
  • Инструкции для uCoz
  • Главная » Статьи » libGDX

    libGDX. Полноэкранный режим. Перехват нажатия кнопок Back и Menu.

    libGDX. Полноэкранный режим. Перехват нажатия кнопок Back и Menu.

    Если приложение пишется для Windows, то во многих случаях может понадобится полноэкранный режим работы приложения. Сделать это можно двумя способами. Первый - указать режим в конфигурации в DesktopLauncher.

    public class DesktopLauncher {
        public static void main (String[] arg) {
            LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
            config.width = 1280;
            config.height = 720;
            config.fullscreen = true;
            new LwjglApplication(new myApp(), config);
        }
    }

    Второй - установить режим экрана в методе create() главного класса.

        @Override
        public void create () {
            .......
            //Gdx.graphics.setDisplayMode(1280, 720, true);
            Gdx.graphics.setDisplayMode(Gdx.graphics.getDesktopDisplayMode().width, Gdx.graphics.getDesktopDisplayMode().height, true);
       }

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

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

    @Override
        public boolean keyDown(int keycode) {
            switch(keycode){
            .......
            case Keys.ESCAPE:
                Gdx.app.exit();
                //Gdx.graphics.setDisplayMode(1280, 720, false);
                break;
            }
            .....
            return true;
        }

    Вместо выхода можно менять режим экрана на оконный (закомментированная строка) или выполнять  что-то еще, например сохранять данные.

    Если в коде нужно проверить находится ли приложение в полноэкранном режиме или нет, можем применит следующий метод:

    boolean fullscreen = Gdx.graphics.isFullscreen();

    Еще один параметр экрана, который мы можем задать для десктопа - это вертикальная синхронизация (VSync). Это синхронизация кадровой частоты приложения с частотой вертикальной развертки монитора. Проще говоря FPS игры приравнивается к частоте обновления изображения на мониторе. Это снижает нагрузку на видеокарту и сглаживает подергивания изображения при скачках FPS.

    Как это сделать в DesktopLauncher:

    public class DesktopLauncher {
        public static void main (String[] arg) {
            LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
            .....
            config.vSyncEnabled = true;
            new LwjglApplication(new myApp(), config);
        }
    }

    Тоже самое в коде главного класса:

    Gdx.graphics.setVSync(true);

    Весь этот код действителен для Десктоп-версии приложения. Андроид версия всегда запускается в полный экран.

    Для Андроид версии приложения может понадобится перехват нажатия кнопки Back, чтобы при выходе из приложения совершить какие-то действия, сохранение данных например. Также может пригодиться перехват нажатия кнопки Menu (есть не на всех устройствах) для вывода экрана меню.

    Чтобы это осуществить в create() добавим строки:

    @Override
        public void create () {
            ......
            Gdx.input.setCatchBackKey(true);
            Gdx.input.setCatchMenuKey(true);
        }

    Теперь можем обрабатывать нажатия на эти кнопки как обычные (действует как на хардварные кнопки, так и на экранные).

        @Override
        public boolean keyDown(int keycode) {
            switch(keycode){
            .....
            case Keys.BACK:
                //Обработка нажатия
                break;
            case Keys.MENU:
                //Обработка нажатия
                break;
            }
            .....
            return true;
        }

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

    Кстати, вот здесь можно посмотреть обозначения всех кнопок, как для Десктопа, так и для Андроид-девайса.

    libGDX. Озвучка персонажа.
    libGDX. Анимация персонажа.
    libGDX. Scene2D. Сенсорное управление персонажем.
    libGDX. Scene2D.
    libGDX. Формы столкновений.
    libGDX. Bullet. Динамика твердого тела. Часть 2.
    libGDX. Bullet. Динамика твердого тела.
    libGDX. Обработка столкновений. Библиотека Bullet. Часть 3.
    libGDX. Обработка столкновений. Библиотека Bullet. Часть 2.
    libGDX. Обработка столкновений. Библиотека Bullet.
    libGDX. Интерактивное взаимодействие с 3D объектами.
    libGDX. Отбраковка объектов не попадающих в обзор камеры.
    3D модель  для libGDX. Пишем код.
    3D модель для движка libGDX
    Строим модель с помощью ModelBuilder
    libGDX. Основы 3D программирования.
    Игра Flower. Ловим капли.
    TexturePacker.Создаем атлас текстур.
    Создаем проект на движке libGDX

    Категория: libGDX | Добавил: Olelucoye (27.06.2015)
    Просмотров: 2369
    | Теги: VSync, полноэкранный режим, перехват Back, Fullscreen, перехват Menu, libGDX | Рейтинг: 0.0/0
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Меню сайта
    Категории раздела
    Андроид разработка [23]
    libGDX [24]
    Мои андроид проекты [6]
    Excel [7]
    Железяки [5]
    Скрипты в блокноте [4]
    Разное [1]
    Форма входа
    Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Яндекс Метрика
    Яндекс.Метрика