Создание простой кнопки в libGDX - PullRequest
0 голосов
/ 06 мая 2020

Я новичок в libgdx и часами пытался сделать простую кнопку! Сначала я попытался сгенерировать его таким образом (что я нашел на этом веб-сайте):

public class TextButtonGenerator {

    public TextButton createButton(String label){
        BitmapFont font = new BitmapFont();
        TextureAtlas buttonAtlas = new TextureAtlas(Gdx.files.internal("sprite.txt"));
        Skin skin = new Skin(buttonAtlas);
//        skin.addRegions(buttonAtlas);
        TextButton.TextButtonStyle textButtonStyle = new TextButton.TextButtonStyle();
        textButtonStyle.font = font;
        textButtonStyle.up = skin.getDrawable("button");
        textButtonStyle.down = skin.getDrawable("button");
        textButtonStyle.checked = skin.getDrawable("button");
        return new TextButton(label, textButtonStyle);

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

E/AndroidRuntime: FATAL EXCEPTION: GLThread 244475
    Process: com.mygdx.game, PID: 21525
    com.badlogic.gdx.utils.GdxRuntimeException: Error reading file: sprite.txt (Internal)E/AndroidRuntime: FATAL EXCEPTION: GLThread 244475
    Process: com.mygdx.game, PID: 21525
    com.badlogic.gdx.utils.GdxRuntimeException: Error reading file: sprite.txt (Internal)

В нем говорится, что root проблемы в моем коде - это то место, где я создаю TextureAtlas. Думаю, проблема в том, что это должен быть файл .pack, а не .txt? Но в этом уроке они используют txt, и он отлично работает:

https://www.codeandweb.com/texturepacker/tutorials/libgdx-physics

Я также нашел другой способ создания кнопки, для которого не требуется pack:

        Skin skin = new Skin();
        Pixmap pixmap = new Pixmap(1, 1, Pixmap.Format.RGBA8888);
        pixmap.setColor(Color.WHITE);
        pixmap.fill();
        skin.add("white", new Texture(pixmap));
        skin.add("default", new BitmapFont());

        TextButton.TextButtonStyle textButtonStyle = new TextButton.TextButtonStyle();
        textButtonStyle.up = skin.newDrawable("white", new Color(0, 0, 0, 1));
        textButtonStyle.font = skin.getFont("default");
        skin.add("default", textButtonStyle);
        return new TextButton(label, skin);

Хотя этот не треснул sh но кнопки нет! Когда я запускаю его, у меня на экране отображается только цвет фона. Откровенно говоря, я даже не понимаю половину кода, который опубликовал выше, я пытаюсь изучить движок на своем, но мне кажется, что я почти не добился прогресса за 2 дня. Любая помощь будет оценена по достоинству. Также я добавляю кнопку в свою сцену и вызываю stage.draw () в моем методе рендеринга на соответствующем экране.

...