Подтвердить что ты не робот

API интерфейса для libgdx

Android и libgdx noob здесь.

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

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

4b9b3361

Ответ 1

Обновлено, чтобы отражать изменения в 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);
}

Ответ 2

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

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

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

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

Элемент высокого уровня состоит из них, например объекта Button, включая: девятипакет и шрифт ojbect и т.д.

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