2016-07-07 4 views
1

Я смущен тем, как я собираюсь создать ярлык scene2d, потому что он берет кожу, для чего мне нужен скин? Я только использовать их на кнопки, как это:Как создать ярлык Scene2d?

TextureAtlas btnAtlas = new TextureAtlas(Gdx.files.internal("myAtlas")); 
Skin skin = new Skin(btnAtlas); 
buttonStyle.up = skin.getDrawable("btnUP"); 

Я смущен, потому что, когда я думаю о наклейке, я думаю, шрифт и текст не атлас, или кожи. Я видел некоторый код онлайн, и они использовали файл .json, а не файл .atlas, который меня смущает, как создать файл .json, который содержит шрифт, который я хочу использовать? Что такое файл .json? Кроме того, я использую платформу Libgdx, и когда я создаю файл атласа, я просто использую LIbgdx текстурный упаковщик, чтобы собрать группу текстур.

+0

https://github.com/libgdx/libgdx/ wiki/Skin – Tenfour04

+1

На самом деле вам не нужен скин. Вы можете передать в LabelStyle, который ссылается на нужный шрифт. – Tenfour04

+0

Кожа - это просто удобный способ иметь все ваши стили для всего вашего пользовательского интерфейса, доступного с одного места. Это особенно полезно, если у вас есть сложный интерфейс со многими стилями, потому что вы можете легко определить стили с помощью JSON. – Tenfour04

ответ

1

Итак, давайте начнем с самого начала:

  • Json файлы

    JSON это текстовый формат - альтернатива для XML. Это похоже на нотацию объектов JavaScript. JSON используются для передачи данных, а также для сериализации объектов - у LibGDX уже есть хорошая поддержка JSON.

    JSON использует {} и : знаки и все хранится как текст. Пример:

    { 
        "name" : "Mike", 
        "city" : "London" 
        "address" : { 
         "road" : "Green", 
         "number" : "5" 
        } 
    } 
    

    Это может быть проанализировано в каком-то Person объекта класса или быть доступно с помощью некоторых клавиш (что-то вроде number = person[address][number] в псевдокоде)

  • шрифта

    Чтобы определить шрифт, вы сможете требуется .fnt-файл (сгенерированный, например, Hiero). Libgdx использует BitmapFonts - визуализированные шрифты с кодами (вы можете думать об этом как о textureatlases). Есть какой-то способ, чтобы использовать файлы непосредственно шрифта как .ttf, но в целом это не хорошая идея, если вы не должны

  • кожи

    кожи является объектом, который определяет экземпляры Scene2D. Вы можете описать, используя Skin, как ваши кнопки будут выглядеть или на каком фоне будет textButton есть. Вы можете создать его непосредственно (как вы уже это сделали, создав экземпляр new Skin() и добавив в него рисунки, стили ...) или используя файл JSON, который содержит всю эту информацию внутри.

    Файл JSON обрабатывается Skin, и теперь вы можете его использовать. Я могу порекомендовать this tutorial, чтобы узнать, как работают скины, но в двух словах:

    1. для создания TextureAtlas (с использованием TexturePacker, конечно) со всей графикой, которую вы используете в Scene2D UI, будут использоваться

    2. для создания надлежащего файла JSON с определениями (см. руководство)

    3. на имя .atlas, .png и .skin файлы одинаковые - так что у вас будет что-то вроде: skin.atlas, skin.json, skin.PNG

    Обратите внимание, что JSON кожи не является традиционным JSON - это не имеет " признаки, так что вы будете иметь

    down: round-down, up: round, 
    

    вместо

    "down": "round-down", "up": "round", 
    

    Рекомендуем также round-down или round являются имена ваших чертежи в атласе


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

Button b = new Button(skin, "registerButton"); 
Смежные вопросы