libgdx добавление красивой кнопки)

187
16 декабря 2019, 21:30

ну у меня получилось добавить кнопку, но смотря на код и в диспетчер задач есть подозрение, что я сделал что-то не так. Кто-нибудь может объяснить, как добавить кнопку с изображением, изменением самого изображения при нажатии и вызовом метода, соответственно, учитывая, что все нажатия обрабатываются в классе Control, спасибо

Answer 1

Cкины в Libgdx.

Скины это расширение Scene2D для более удобного управления интерфейсом. Это расширение мы и будем использовать для создания красивой кнопки:) (но можно и не только для кнопки). Каждый виджет из Scene2D имеет вложенный класс стиля (например, возьмем ImageButton, если посмотреть внутрь этого класса, в нем будет класс стиля ImageButtonStyle.

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

Вернемся к скинам. Скины - это скрипты, которые описывают стили используемых виджетов. Чтобы создать скин, создайте json файл (например, defaultUI.json) в папке assets/skins.

Далее впишите туда следующее:

{
  "com.badlogic.gdx.scenes.scene2d.ui.ImageButton$ImageButtonStyle": {
    "default-button":
    {
      "imageUp": "default_button_up",
      "imageOver": "default_button_over" 
    }
  },
}

Теперь опишу, что это значит.

"com.badlogic.gdx....." - путь к стилю, который вы хотите использовать. Если вам нужна кнопка - картинка, то вы будете использовать стиль из примера.

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

"imageUp и imageOver" - это сами значения стиля. Им задаются картинки, которые назначаются в разных ситуациях. Например, "imageUp": "default_button_up" - использовать картинку с именем default_button_up по дефолту для кнопки. "imageOver" - то, какую картинку использовать, если мышка над вашей кнопкой. Какие еще можно использовать параметры - гугл в помощь. Для кнопки все параметры тут.

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

Когда мы создали атлас и скин, нам нужно их связать в коде. Сделать это можно следующим образом:

 public static TextureAtlas DEFAULTUI_TEXTUREATLAS = new TextureAtlas("тут путь к атласу, пример (skinAtlas.atlas)";
 public static Skin DEFAULTUI_SKIN = new
 Skin(Gdx.files.internal("skins/defaultUI.json"), DEFAULTUI_TEXTUREATLAS);

На этом всё, можно использовать скин. Пример создания кнопки:

ImageButton menuButton= new ImageButton(DEFAULTUI_SKIN, "default-button");

Если какой-то этап не понятен, пишите, дополню ответ. Примерно так делается интерфейс в Libgdx.

READ ALSO
RPC over serial port - адекватно ли? Как делают в Enterprise?

RPC over serial port - адекватно ли? Как делают в Enterprise?

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

170
Как пользоваться классом DerivatveStructure?

Как пользоваться классом DerivatveStructure?

Мне нужно задать полином 2-го порядка от 3 неизвестных, взять от него производную 1-го порядка, а так же найти значения этих функций на некотором...

158
Вложенный цикл for * for [закрыт]

Вложенный цикл for * for [закрыт]

Хотите улучшить этот вопрос? Update the question so it's on-topic for Stack Overflow на русском

160
Как сформатировать возврат метода в нужном стринговом формате Java?

Как сформатировать возврат метода в нужном стринговом формате Java?

Подскажите, как сделать return int массива в виде строки без [ , , , ] имею [100, 180, 90, 56, 65, 74, 68, 86, 99, 555555] нужно 100 180 90 56 65 74 68 86 99 555555

140