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

NiftyGui Введение

Опубликованно: 13.09.2015, 23:25
Последняя редакция, AdiDOS: 07.05.2017 0:10

В процессе разработки 3D приложений практически во всех случаях , мы сталкиваемся с вопросом а как же мне реализовать некий оконный интерфейс для настроек или редактирования параметров в 3D сцене , на мое мнение разработчики JME3 внесли реальный вклад именно в эту тему.

Nifty Gui — это графический пользовательский интерфейс или (ГПИ) под названием  Nifty  , простыми словами NiftyGui предоставляет разработчикам уже готовую реализацию создания оконных приложений, кнопки, чекбоксы, панели , всплывающие меню .

Перейдем к коду.

package test;

import com.jme3.app.SimpleApplication;
import com.jme3.asset.plugins.FileLocator;
import com.jme3.niftygui.NiftyJmeDisplay;
import de.lessvoid.nifty.Nifty;

public class TestNiftyGui extends SimpleApplication {

 public static void main(String[] args){
   TestNiftyGui app = new TestNiftyGui();
   app.setPauseOnLostFocus(false);
   app.start();
 }

 public void simpleInitApp() {
   //Регистрируем путь к XML файлу
   assetManager.registerLocator("E:/AssetsTest/NiftyGui/XmlFiles/", FileLocator.class);
   //Создаем дисплей для отображения NiftyGui
   NiftyJmeDisplay niftyDisplay = new NiftyJmeDisplay(assetManager,
   inputManager,
   audioRenderer,
   guiViewPort);

   Nifty nifty = niftyDisplay.getNifty();
 //Подгружаем XML
   nifty.fromXml("HelloWorld.xml", "start");

   guiViewPort.addProcessor(niftyDisplay);

   //Отключаем камеру
   flyCam.setEnabled(false);

 }

}

 

В данном примере демонстрируется создание панели с надписью «Hello from jME3» ,  как вы заметили в коде нет реализации создания панели а все потому что NiftyGui  завязан с структурой Xml файла  , именно с помощью XML мы и описываем все параметры отображения , хотя есть и другой способ создания компонентов но это уже другая тема.

В NiftyGui также можно назначать обработчики событий допустим на передвижение мыши , по клику мыши и прочее а так же присутствуют красивые эффекты допустим плавное появление компонентов , налаживание текстур , работа из звуком , слоями , прозрачность  ну впрочем все что нужно для полноценной разработке (ГПИ), ну далее разбираем XML.

<?xml version="1.0" encoding="UTF-8"?>
 <nifty>
 <screen id="start">
 <layer id="layer" backgroundColor="#000f" childLayout="center">
 <panel id="panel" height="25%" width="35%" align="center" valign="center" backgroundColor="#f60f" childLayout="center" visibleToMouse="true">
 <text id="text" font="aurulent-sans-16.fnt" color="#000f" text="Hello from jME3" align="center" valign="center" />
 </panel>
 </layer>
 </screen>
</nifty>

Кто сталкивался с разработкой Html тому проще будет понять структуру разработки ну все по сути не сложно начнем с основного тега <nifty>…</nifty> все что реализуется с помощью NiftyGui должно заключаться именно в этот тег.

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

 <screen id="start">

Здесь создаем слой.

<layer id="layer" backgroundColor="#000f" childLayout="vertical">

Создание панели

 <panel id="panel" height="25%" width="35%" align="center" valign="center" backgroundColor="#f60f" childLayout="center" visibleToMouse="true">

Добавление текста на панель

 <text id="text" font="aurulent-sans-16.fnt" color="#000f" text="Hello from jME3" align="center" valign="center" />

1

Ну а далее описание входящих параметров тегов.

id — идентификатор

backgroundColor — цвет фона

childLayout — Размещение всех вложенных слоев и компонентов

height— Высота в процентах или в пикселях

width— Ширина в процентах или в пикселях

align — Выравнивание

valign — Вертикальное выравнивание

visibleToMouse — Отображение мыши на панели могут быть true или false

font — Определение шрифта

color — Цвет

text — Отображаемый текст

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

Спасибо за внимание!!!

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

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