Libgdx:为什么我的按钮没有出现

时间:2016-01-16 08:38:37

标签: java button libgdx

我正在尝试制作我的按钮,但无济于事。我一直在线跟踪以下教程here。在教程中,按钮在启动画面后显示。在我的代码中它根本不显示。 这是我按钮的代码。

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.ui.Skin;
import com.badlogic.gdx.scenes.scene2d.ui.Table;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton.TextButtonStyle;

public class MainMenu implements Screen{
    private Stage stage;
    private TextureAtlas atlas;
    private Skin skin;
    private Table table;
    private TextButton buttonStart;
    private BitmapFont black;
    @Override
    public void show() {
        stage = new Stage();
        atlas = new TextureAtlas("Buttons/buttons.pack");
        skin = new Skin(atlas);
        table = new Table(skin);
        black = new BitmapFont(Gdx.files.internal("Fonts/black.fnt"), false);
        table.setBounds(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
        TextButtonStyle textButtonStyle = new TextButtonStyle();
        textButtonStyle.up = skin.getDrawable("play.up");
        textButtonStyle.down = skin.getDrawable("play");
        textButtonStyle.pressedOffsetX = 1;
        textButtonStyle.pressedOffsetY = -1;
        textButtonStyle.font = black;

        buttonStart = new TextButton("PLAY", textButtonStyle);
        buttonStart.pad(20);

        table.add(buttonStart);
        table.debug();
        stage.addActor(table);
    @Override
    public void render(float delta) {
        Gdx.gl.glClearColor(0, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        stage.act(delta);
        stage.draw();
    }

谢谢

1 个答案:

答案 0 :(得分:1)

discussion about this topic的摘要:

问题并非直接出现在 MainMenu 中(尽管下面有一个小问题)

事实证明,项目中没有MainMenu Screen启动。主类(MalawianCulture)一直在调用 Splash 屏幕,但没有过渡到MainMenu。

更改

    //MalawianCulture
    @Override
    public void create() {      
        setScreen(new Splash());
    }

    //MalawianCulture
    @Override
    public void create() {      
        setScreen(new MainMenu());
    }

“已解决”问题 - 当然有必要从Splash到MainMenu进行适当的转换,因为这是理想的应用流程。

MainMenu 类及其资产也存在一些问题。但是

缺少 black.fnt 文件
    page id=0 file="black_0.tga"
    page id=1 file="black_1.tga"

图像文件(.tga为image format)。有必要添加.tga文件或仅注释从.fnt文件创建字体以使其运行。

    //black = new BitmapFont(Gdx.files.internal("black.fnt"), false);

    ....

    textButtonStyle.font = new BitmapFont();

    buttonStart = new TextButton("", textButtonStyle);

    ...