java - LibGDX 标签不绘图

标签 java label libgdx draw scene2d

我试图在游戏帮助屏幕的屏幕上绘制 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
        }
    }
}

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

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

最佳答案

尝试更改字体文件。也许这与将颜色设置为白色有关。我在字体方面遇到了一些非常奇怪的错误,并且不得不使用 Angel Code site 的输出。 1.14版本终于搞定了。 1.13 不适合我。

关于java - LibGDX 标签不绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21923180/

相关文章:

java - 无法加载声音文件 LibGdx

java - Libgdx 用纹理重构一个类

java - Maven 未检测项目依赖关系

java - 从 SDK 管理器中删除后,我能否取回 Google Play 许可库包?

java - 根据选择动态更改 View 部分内容

java - 在 javafx 标签中将特定单词设为斜体

Python tkinter 标签方向

ClearCase:查找仅具有一个特定标签而不是更多标签的文件

java - 如何在 libgdx scene2d ui 中绘制信息面板

java - 如何配置 log4j 以将不同的日志级别记录到同一记录器的不同文件中