2

我正在尝试在屏幕上为我的游戏帮助屏幕绘制一个 LibGDX 标签,但是我没有从 JVM 收到任何错误,但标签文本不会绘制。

这是我的 HelpMenu 类:

package metrovelox.screens;

//imports...
public class HelpMenu extends Screen {

    private Stage stage;

    public HelpMenu(Game game, String name) {
        super(game, name);
    }

    @Override
    public void init() {
        Texture.setEnforcePotImages(false);

        stage = new Stage();

        Group background = new Group();
        Group foreground = new Group();

        background.setBounds(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
        foreground.setBounds(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());

        stage.addActor(background);
        stage.addActor(foreground);

        background.addActor(ResourceLoader.loadImage("ui/Main Menu Background.jpg"));

        TextButton back = new TextButton("back", GuiSkinRegistry.retrieve("Simple Buttons"));
        back.setPosition(Utils.getScreenCenter().x - 186, Utils.getScreenCenter().y - 200);

        Label text = new Label("Hello", GuiSkinRegistry.retrieve("Simple Label"));
        text.setPosition(Utils.getScreenCenter().x, Utils.getScreenCenter().y);

        back.addListener(new ClickListener(Buttons.LEFT) {
            @Override
            public void clicked(InputEvent event, float x, float y) {
                getGame().setScreen(getGame().getScreen("Main Menu"));
            }
        });

        foreground.addActor(back);
        foreground.addActor(text);

        Gdx.input.setInputProcessor(stage);
    }

    @Override
    public void render(float delta) {
        super.render(delta);
        stage.act(delta);
        stage.draw();
    }

    @Override
    public void dispose() {
        super.dispose();
        stage.dispose();
    }

}

这是我的主要游戏类:

package metrovelox.core;

import metrovelox.screens.HelpMenu;
import metrovelox.screens.MainMenu;

public class Metrovelox extends Game {

    @Override
    public void init() {
        //Register skins, screens etc...
        GuiSkinRegistry.register("Simple Buttons", ResourceLoader.loadSkin("MainMenu", ResourceLoader.loadTextureAtlas("ui/simple_buttons")));
        GuiSkinRegistry.register("Simple Label", ResourceLoader.loadSkin("HelpMenu"));

        addScreen(new MainMenu(this, "Main Menu"));
        addScreen(new HelpMenu(this, "Help Menu"));


        setScreen(getScreen("Main Menu"));
    }

}

这是我的皮肤文件:

{
    com.badlogic.gdx.graphics.Color: {
        white: { hex: "ffffff" }
    },
    com.badlogic.gdx.graphics.g2d.BitmapFont: {
        impact: {file: "../fonts/impact.fnt"}
    },
    com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle: {
        default: {
            font: impact, fontColor: white
        }
    }
}

这是帮助屏幕的屏幕截图: 截屏

如您所见,标签根本没有被绘制。所有文件都在正确的位置,从我从 LibGDX 文档中收集到的所有代码似乎都是正确的,但标签不会绘制。

4

1 回答 1

0

尝试更改字体文件。也许这与将颜色设置为白色有关。我在字体方面遇到了一些非常奇怪的错误,不得不使用Angel Code 站点1.14 版的输出来最终解决问题。1.13 对我不起作用。

于 2014-02-21T15:35:54.030 回答