Я новичок в 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 () в моем методе рендеринга на соответствующем экране.