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

Метка

Опубликованно: 01.05.2017, 1:14
Последняя редакция, Andry: 01.05.2017 1:17

Класс Label

Хотя реальной необходимости в создании класса Label нет, поскольку класс Element является меткой (как и всем остальным), однако имеются две причины:

  1. Предоставление 3-х общих конструктора
  2. Использование стилей для обеспечения глобальных настроек для всего текста с помощью класса Label.
Информация о стиле может быть переопределена любым экземпляром с помощью установщиков Text/Font, предоставляемых классом Element

Альтернативно, класс LabelElement может быть использован для создания метки, если это будет более удобно.

Вот пример того, как можно использовать класс Label (или класс LabelElement):

Следующий экземпляр класса Gui может быть создан и вызван из метода initialize(), метода appState(предпочтительней) или метода simpleInitApp() самого класса приложения который расширяет SimpleApplication, например:

  @Override
  public void simpleInitApp() {
      gui = new Gui(this);
      guiNode.addControl(gui.getScreen());
      gui.setText1("Rotate to 0 degrees.");
      gui.setText2("Rotating clockwise.");
  }

Ниже приведен код, который создает Label:

public class Gui {

    private Screen screen;
    //private LabelElement label1, label2;
    private Label label1, label2;
    private Panel background;

    public Gui(App app){
        screen = new Screen(app);
        float width  = 300f;
        float height = 100f;

        //label1 = new LabelElement(
        label1 = new Label(
                screen,                           // Screen
                "text1",                          // ID
                new Vector2f(0f, height / 10f),   // расположение
                new Vector2f(width, height / 2),  // размер
                new Vector4f(0f, 0f, 0f, 0f),     // resize borders
                null);                            // image

        //label2 = new LabelElement(
        label2 = new Label(
                screen,                             // Screen
                "text2",                            // ID
                new Vector2f(0f, height / 2 - 10f), // расположение
                new Vector2f(width, height / 2),    // размер
                new Vector4f(0f, 0f, 0f, 0f),       // resize borders
                null);                              // image

        background = new Panel(
                screen,                                       // Screen
                "background",                                 // ID
                new Vector2f(20f, 20f),                       // расположение
                new Vector2f(width, height),                  // размер
                new Vector4f(10f, 10f, 10f, 10f),             // resize borders
                "tonegod/gui/style/def/Window/panel_x.png");  // image


//        AssetManager assetManager = app.getAssetManager();
//        Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
//        mat.setColor("Color", ColorRGBA.Gray);
//        background.setMaterial(mat);

        label1.setText("First Text");
        label1.setFontColor(ColorRGBA.White);
        label1.setTextAlign(BitmapFont.Align.Center);

        label2.setText("Second Text");
        label2.setFontColor(ColorRGBA.White);
        label2.setTextAlign(BitmapFont.Align.Center);

        background.addChild(label1);
        background.addChild(label2);
        screen.addElement(background);

    }

    public Screen getScreen(){
        return screen;
    }

    public void setText1(String text1){
        label1.setText(text1);
        //label1.show();
    }

    public void setText2(String text1){
        label2.setText(text1);
        //label2.show();
    }
}

Исправление проблем:

Если ваши label не отображаются, убедитесь, что строка идентификатора для каждого из них отличается. Для label с одинаковой строкой идентификатора будет отображаться только первая. Последующие не будут добавлены к родительскому элементу, и … насколько я знаю … это не вызывает исключение. Наличие одинаковых строк идентификатора между метками или любым другим элементом может исходить от копирования и вставки конструкторов.

… был там … сделал это … смайлик :.


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

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

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