【发布时间】:2016-04-08 07:30:54
【问题描述】:
我最近在我的 libGDX 程序中发现了一个奇怪的问题。当我启动我的程序时,我首先显示SplashScreen,然后是MainMenu 屏幕,然后您就可以进入程序了。问题是,如果我在主菜单上更改screen,我的所有TextButtons 都会变成黑色,并且它们的文本字符会变成黑框。
(我使用启动按钮重新加载了 MainMenu)
这会影响所有其他屏幕中的所有文本框。我的想法是我的 JSON 在某种程度上有问题。因为当我停止使用我的 JSON 中的可绘制对象并使用FreeTypeFont 而不是我的BitmapFont 时,至少字体不再变黑。我使用了验证器,他们说我的 JSON 没有问题,但无论如何都是这样(TextButtonStyle 在底部):
{
"com.badlogic.gdx.graphics.Color": {
"white": {
"r": 1,
"g": 1,
"b": 1,
"a": 1
},
"black": {
"r": 0,
"g": 0,
"b": 0,
"a": 1
},
"red": {
"r": 1,
"g": 0,
"b": 0,
"a": 1
},
"green": {
"r": 0,
"g": 1,
"b": 0,
"a": 1
},
"blue": {
"r": 0,
"g": 0,
"b": 1,
"a": 1
},
"dark_grey": {
"r": 0.8,
"g": 0.8,
"b": 0.8,
"a": 1
}
},
"com.badlogic.gdx.graphics.g2d.BitmapFont": {
"white": {
"file": "data/fonts/white.fnt"
},
"black": {
"file": "data/fonts/black.fnt"
}
},
"com.badlogic.gdx.scenes.scene2d.ui.Window$WindowStyle": {
"default": {
"titleFont": "black",
"titleFontColor": "dark_grey"
}
},
"com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle": {
"default": {
"font": "white",
"fontColor": "white"
}
},
"com.badlogic.gdx.scenes.scene2d.ui.List$ListStyle": {
"default": {
"font": "white",
"fontColorUnselected": "white",
"fontColorSelected": "black",
"selection": "default.selection"
}
},
"com.badlogic.gdx.scenes.scene2d.ui.ScrollPane$ScrollPaneStyle": {
"default": {
"hScrollKnob": "button.up",
"vScrollKnob": "button.up"
}
},
"com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle": {
"default": {
"up": "button.up",
"down": "button.down",
"font": "black",
"pressedOffsetX": 1,
"pressedOffsetY": -1
}
}
}
这是我添加和更改按钮样式的代码。
// Splash Screen button
buttonSplash = new TextButton("SPLASH SCREEN", skin);
buttonSplash.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
// When you click the button, create a new screen
((Game) Gdx.app.getApplicationListener()).setScreen(new SplashScreen());
}
});
buttonSplash.pad(20);
//Rest of the buttons....
如果你觉得你需要整个代码,我也可以发布,但它相当长,所以我没有发布它。
即时编辑:尝试了全新的 JSON(libGDX 附带的那个),但我仍然遇到同样的问题。
【问题讨论】:
-
你使用的是静态
AssetManager吗?