Докуметация Cтарт Статьи Форум Лента Вход
Не официальное русскоязычное сообщество
Главная
    Документация jMonkeyEngine
        jMonkeyEngine Уроки и Документация
            Вклады
                tonegodGUI
                    Быстрый Старт

Быстрый Старт

Опубликованно: 28.04.2017, 23:20
Последняя редакция, Andry: 03.10.2017 11:46

Инструкция по началу работы:

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

Шаг 1. Создание управления экраном(Screen Control).

Это можно сделать одним из двух способов.

Способ 1 — Использование информации о стиле, предоставленной по умолчанию:

// Это = для любого JME приложения
Screen screen = new Screen(this);
guiNode.addControl(screen);

Способ 2. Предоставление пути к другой таблице стилей.

// Это = для любого JME приложения
Screen screen = new Screen(this, “tonegod/gui/style/def/style_map.xml”);
guiNode.addControl(screen);
Style_map.xml состоит из списка XML-документов, содержащих различные стили для разнообразного использования. Вы можете скопировать карту стиля по умолчанию и заменить что то одно, или многое, или все на специфичный стиль для проекта (далее рассматривается в этом уроке).

Шаг 2. Добавление элемента управления на экран

Можно также начать с чего-то интересного, поскольку все конструкторы управления следуют одному и тому же формату. Создайте окно и добавьте в него кнопку.

Конструктор 1:
Вот три варианта конструктора для создания окна:

/** Параметры:
  * Screen screen,
  * String UID,
  * Vector2f положение
  */

Window win = new Window(screen, “win”, new Vector2f(15, 15));
screen.addElement(win);

И … бум! У вас есть новое изменяемое размерное подвижное окно в составе пользовательского интерфейса. Теперь давайте рассмотрим два дополнительных конструктора.

Конструктор 2:
Второй добавляет 4-й параметр для указания размеров окна, например:

/** Дополнительный параметр:
  * Vector2f Габаритные размеры  */

Window win = new Window(screen, “win”, new Vector2f(15, 15),
    new Vector2f(400, 300)
);
screen.addElement(win);

Конструктор 3:
Третья опция добавляет еще 2 параметра и выглядит так:

/** Дополнительный параметр:
  * Vector4f resizeBorders,
  * String defaultImg
  */

Window win = new Window(screen, “win”, new Vector2f(15, 15), new Vector2f(400, 300),
    new Vector4f(14,14,14,14),
    “tonegod/gui/style/def/Window/panel_x.png”
);
screen.addElement(win);
Недавно было добавлено 3 новых параметра конструктора. Они такие же, как 3 выше минус параметр UID.

Любые параметры, которые не заданы, берутся из значений по умолчанию, указанных в информации о стиле окна.

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

Шаг 3. Добавление кнопки в окно

Теперь мы можем добавить кнопку в окно, которая создаст еще БОЛЬШЕЕ окно

Класс Button является одним из немногих классов управления графическим интерфейсом, который реализует интерфейс управления JME. Элемент управления становится активным только в том случае, если вызывается setInterval, поскольку Button требует использования событий stillPressed. Это и многое другое будет рассмотрено в последующих документах. Опять же, вы имеете три выше перечисленных варианта для создания экземпляра элемента управления кнопки.

Элемент управления кнопками (как и многие элементы управления) является абстрактным и предоставляет методы для обработки пользовательского ввода.

Сначала давайте создадим метод для создания новых окон:

private int winCount = 0;

public final void createNewWindow(String someWindowTitle) {
    Window nWin = new Window(
        screen,
        “Window” + winCount,
        new Vector2f( (screen.getWidth()/2)-175, (screen.getHeight()/2)-100 )
    );
    nWin.setWindowTitle(someWindowTitle);
    screen.addElement(nWin);
    winCount++;
}

Теперь мы можем добавить кнопку которая вызовет наш метод создания окна.

/** Parameters:
  * Screen screen,
  * String UID,
  * Vector2f position
  */

ButtonAdapter makeWindow = new ButtonAdapter( screen, “Btn1″, new Vector2f(15, 55) ) {
    @Override
    public void onButtonMouseLeftUp(MouseButtonEvent evt, boolean toggled) {
        createNewWindow(“New Window ” + winCount);
    }
};

// Добавьте его в исходное окно
win.addChild(makeWindow);
Для целей компоновки предлагается добавить все дочерние Элементы в элемент управления PRIOR для добавления элементов управления на экран … поэтому создайте окно, добавьте кнопку, добавляющую окно к экрану.

Немного больше информации:

Все элементы управления основаны на классе Element, который имеет доступ ко всем действиям по умолчанию. Действие может быть отключено на ЛЮБОЙ на любом элементе управления или другом примитивном элементе.

Несколько общих моделей поведения:

// Позволяет изменять размер элемента управления в определенных границах
element.setIsResizable(boolean);

// Делает элемент управление подвижным
element.setIsMovable(boolean);

// Ограничивает родительскими размерами
element.setLockToParentBounds(boolean);

// На взаимодействии влияет прямой родитель, а не сам
element.setEffectParent(boolean);

// При взаимодействии эффекты только от родителя (screen lvl) вместо самого
element.setEffectAbsoluteParent(boolean);

// Позволяет элементам управления масштабировать север/юг от любого инкапсулирующего родительского размера
element.setScaleNS(boolean);
// Позволяет элементам управления масштабировать восток/запад от любого инкапсулирующего родительского размера
element.setScaleEW(boolean);

element.setDockN(boolean); // Также включает/отключает dock юг(south)
element.setDockS(boolean); // Также включает/отключает dock север(north)
element.setDockE(boolean); // Также включает/отключает dock западн(west)
element.setDockW(boolean); // Также включает/отключает dock восток(east)

// Принуждение элемента игнорировать мышь
element.setIgnoreMouse(boolean);
Есть и другие варианты поведения, однако эти являются наиболее важными при создании настраиваемых элементов управления для обеспечения того, чтобы вложенные элементы реагировали так, как вам хотелось бы, когда изменяется родительский элемент.

Пример быстрого запуска в полном объеме

public int winCount = 0;
private Screen screen;

public final void createNewWindow(String someWindowTitle) {
    Window nWin = new Window(
        screen,
        “Window” + winCount,
        new Vector2f( (screen.getWidth()/2)-175, (screen.getHeight()/2)-100 )
    );
    nWin.setWindowTitle(someWindowTitle);
    screen.addElement(nWin);
    winCount++;
}

public void simpleInitApp() {
    screen = new Screen(this, “tonegod/gui/style/def/style_map.xml”);
    screen.initialize();
    guiNode.addControl(screen);

    // Добавить окно
    Window win = new Window(screen, “win”, new Vector2f(15, 15));

    // Создать кнопку и добавить в окно
    ButtonAdapter makeWindow = new ButtonAdapter( screen, “Btn1″, new Vector2f(15, 55) ) {
        @Override
        public void onButtonMouseLeftUp(MouseButtonEvent evt, boolean toggled) {
            createNewWindow(“New Window ” + winCount);
        }
    };

    // Добавим её в наше начальное окно
    win.addChild(makeWindow);

    // Добавить окно на экран
   screen.addElement(win);
}

Переведено для jmonkeyengine.ru, оригинал
Автор перевода: Andry

Добавить комментарий

jMonkeyEngine.ru © 2017. Все права сохранены.