【发布时间】:2018-08-14 22:37:32
【问题描述】:
我正在为我正在使用 LibGDX 为 Android 开发的游戏开发主菜单屏幕。它需要三个 ImageTextButtons - 播放、设置、注销。这三个按钮中的每一个都有与之关联的不同图像,但是,当我运行应用程序时,每个按钮都有相同的图像——注销图像。我认为这可能与注销按钮是最后一个声明的按钮有关,因此它可能会覆盖其他按钮的图像?
如您所见,即使我为每个按钮加载并使用了不同的图像文件,所有按钮上仍显示相同的注销图标。下面是构建和初始化按钮的代码:
private ImageTextButton playBtn, settingsBtn, logoutBtn;
public void initButtons(){
playBtn = new ImageTextButton("Play", skin, "default");
playBtn.getStyle().imageUp = new TextureRegionDrawable(new TextureRegion(new Texture(Gdx.files.internal("playBtn.png"))));
playBtn.getStyle().imageDown = new TextureRegionDrawable(new TextureRegion(new Texture(Gdx.files.internal("playBtn.png"))));
settingsBtn = new ImageTextButton("Settings", skin, "default");
settingsBtn.getStyle().imageUp = new TextureRegionDrawable(new TextureRegion(new Texture(Gdx.files.internal("settingsBtn.png"))));
settingsBtn.getStyle().imageDown = new TextureRegionDrawable(new TextureRegion(new Texture(Gdx.files.internal("settingsBtn.png"))));
logoutBtn = new ImageTextButton("Log Out", skin, "default");
logoutBtn.getStyle().imageUp = new TextureRegionDrawable(new TextureRegion(new Texture(Gdx.files.internal("logoutBtn.png"))));
logoutBtn.getStyle().imageDown = new TextureRegionDrawable(new TextureRegion(new Texture(Gdx.files.internal("logoutBtn.png"))));
}
这是我制作/加载皮肤并调用该方法来初始化按钮的显示方法:
@Override
public void show() {
Gdx.input.setInputProcessor(stage);
this.skin = new Skin();
this.skin.addRegions(MathsVsZombies.manager.get("UI/uiskin.atlas", TextureAtlas.class));
this.skin.add("default-font", MathsVsZombies.font24);
this.skin.load(Gdx.files.internal("UI/uiskin.json"));
initButtons();
}
为了让 ImageTextButtonStyle 工作,我必须将此代码添加到皮肤 JSON 文件中:
"com.badlogic.gdx.scenes.scene2d.ui.ImageTextButton$ImageTextButtonStyle":{
"default": { "down": "default-round-down", "up": "default-round", "font": "default-font", "fontColor": "white" }
},
这与 TextButton 的“默认”样式的代码相同。也许这就是问题所在?我很肯定图像文件存储在正确的目录下,并且它们都存储在一起。他们应该是这样的:
请帮助解决这个问题,因为我对 LibGDX 和 gamedev 的了解非常有限,所以我不知道出了什么问题,更不用说如何解决了。
【问题讨论】:
标签: android image libgdx scene2d skin