java - Libgdx 使用 uiskin.json 创建一个带有背景的 TextButton

标签 java libgdx scene2d

我想用uiskin.json定义TextButton的背景。

这是我尝试过但没有成功的方法:

com.badlogic.gdx.scenes.scene2d.ui.Skin$TintedDrawable: {
        img: { file: bg.png }
    },
com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: {
    default: { down: default-round-down, up: img, font: default-font, fontColor: white }
}

所以我想将bg.png设为默认背景。我该怎么做?

最佳答案

皮肤无法从 json 读取文件位置。如果您遵循了 Skin 教程,您可能会使用如下的 TextureAtlas 实例化它:

skin = new Skin(skinFilePath, textureAtlas);

当您像这样加载它时,json 中的所有图像都必须可以通过它们在 TextureAtlas 中的名称来使用。

通常,出于性能方面的考虑,您需要将所有图像都放在一个TextureAtlas中。因此,最好的解决方案是将此 bg.png 图像添加到您的TextureAtlas中,然后您可以通过其TextureAtlas名称来引用它。

如果您必须将其作为单独的文件加载,则必须在加载皮肤之前手动加载它。

Texture bgTexture = new Texture("bg.png");
skin = new Skin(); //empty constructor causes it not to load yet.
skin.add("bg", bgTexture);
skin.addRegions(textureAtlas); // you will be responsible for disposing the atlas separately from the skin now.
skin.load(skinFilePath);

关于java - Libgdx 使用 uiskin.json 创建一个带有背景的 TextButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30149728/

相关文章:

java - 如何使用Java提交post请求?

java - 如何临时取出 Actor 的 Action 并将其分配回来

java - LibGDX 3D 相机实现

java - Libgdx 碰撞问题

java - LibGDX 初始化 Drawable

java - 使用 libgdx 设置新屏幕会使我的游戏崩溃?

java - 如何对 n 个散列图使用 java 8 合并函数

java - 根据自定义数据过滤列表

java - onSave-/onRestoreInstanceState 不起作用

java - 如何在 LibGDX scene2d 中让 Actor 暂时移动到前台?