UI API для libgdx - PullRequest
       14

UI API для libgdx

14 голосов
/ 28 июня 2011

Android и libgdx noob здесь.

Кто-нибудь знает что-нибудь о недавнем интерфейсе API, выпущенном для libgdx?См. Сообщение в блоге здесь: http://www.badlogicgames.com/wordpress/?p=2058

Я хочу создать базовую систему меню, и мне было интересно, упростит ли этот интерфейс API.

Ответы [ 2 ]

24 голосов
/ 25 июля 2011

Обновлено, чтобы отразить изменения в LibGDX

Я нахожусь в аналогичной позиции, следующий код работал для меня, чтобы создать базовое меню (контейнер кнопок).Код не будет работать как есть, потому что он использует некоторые из моих классов, но что действительно важно, так это содержимое метода create.Это создает заголовок по центру, затем несколько кнопок в контейнере, который центрируется, затем метку fps в левом нижнем углу и изображение в правом нижнем углу.Файлы тем и некоторые изображения из тестовых ресурсов LibGDX .

Я получил это для работы с классами приложений JOGL, LWJGL и android.Я запустил его на Droid 2 и запустил так же, как на моем рабочем столе.Надеюсь, это поможет вам начать.

public class MenuScreen extends Screen{
private Stage ui;
private Table window;
@Override
public void create(final Game game) {
    super.create(game);
    TextureRegion image = new TextureRegion(new Texture(Gdx.files.internal(Art.badlogicSmall)));
    Label fps = new Label("fps: ", Art.sSkin.getStyle(LabelStyle.class),"fps");
    ui = new Stage(Gdx.graphics.getWidth(),Gdx.graphics.getHeight(), true);
    Gdx.input.setInputProcessor(ui);
    window = new Table("window");
    window.width = ui.width();
    window.height = ui.height();
    window.x = 0;
    window.y = 0;
    window.debug();
    Label title = new Label("Title",Art.sSkin.getStyle(LabelStyle.class),"title");
    Button newGame = new Button("New Game",Art.sSkin.getStyle(ButtonStyle.class),"new");
    newGame.setClickListener(new ClickListener() {
        @Override
        public void click(Actor actor) {
            game.setScreen(GameScreen.class);               
        }
    });
    Button optionMenu = new Button("Option",Art.sSkin.getStyle(ButtonStyle.class),"Options");
    Button helpMenu = new Button("Help",Art.sSkin.getStyle(ButtonStyle.class),"Help");
    Image libgdx = new Image("libgdx", image);
    window.row().fill(false,false).expand(true,false).padTop(50).padBottom(50);
    window.add(title);
    Table container = new Table("menu");
    container.row().fill(true, true).expand(true, true).pad(10, 0, 10, 0);
    container.add(newGame);
    container.row().fill(true, true).expand(true, true).pad(10, 0, 10, 0);
    container.add(optionMenu);
    container.row().fill(true, true).expand(true, true).pad(10, 0, 10, 0);
    container.add(helpMenu);
    window.row().fill(0.5f,1f).expand(true,false);
    window.add(container);
    Table extras = new Table("extras");
    extras.row().fill(false,false).expand(true,true);
    extras.add(fps).left().center().pad(0,25,25,0); 
    extras.add(libgdx).right().center().pad(0,0,25,25);
    window.row().fill(true,false).expand(true,true);
    window.add(extras).bottom();
    ui.addActor(window);
}

@Override
public void render(float arg0) {
    Gdx.gl.glClearColor(0.2f, 0.2f, 0.2f, 1);
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
    ((Label)ui.findActor("fps")).setText("fps: " + Gdx.graphics.getFramesPerSecond());  
    ui.act(Math.min(Gdx.graphics.getDeltaTime(), 1 / 30f));
    ui.draw();
    Table.drawDebug(ui);
}
@Override
public void resize(int width, int height) {
    ui.setViewport(width, height, true);
    Log.d("Resize: "+width+", "+height);
}

7 голосов
/ 03 сентября 2011

Да, новый пользовательский интерфейс очень прост в использовании. Вы можете использовать объект Skin , чтобы создать объект Actor , а затем присоединить их к объекту Stage .

Вы можете ссылаться на файл UITest.java в источнике libgdx. Он демонстрирует, как использовать основные элементы пользовательского интерфейса.

С низкого уровня, чтобы увидеть новый пользовательский интерфейс libgdx, он включает только следующий элемент:

  • NinePatch: базовый объект формы для создания элемента может растягиваться;
  • Область: объект формы для элемента фиксированного размера;
  • Шрифт: объект bitmapfont для отображения текста;

Элемент высокого уровня, состоящий из них, например объекта Button, включает в себя: ninepatch и font ojbect и т. Д.

Таким образом, вы можете очень легко создать 2D пользовательский интерфейс, используя их. :)

...