Scene2d 小部件无法正确调整大小
Scene2d Widgets won't resize properly
我有一个 window,其中包含文本字段和一个按钮,用于从用户那里获取一些输入。
最初 Window 看起来不错,如下所示。
http://i.stack.imgur.com/ZDchq.png
当我调整 window 大小时,window 绘制正常,但 window 的 Widget 元素部分绘制,如下所示。
http://i.stack.imgur.com/NTpBN.png
这是我 Screen
的 show()
函数的代码
:
@Override
public void show() {
// TODO Auto-generated method stub
game.assetManager.load("data/secondBackground.pack", TextureAtlas.class);
game.assetManager.finishLoading();
stage = new Stage();
TextureAtlas backgroundAtlas = game.assetManager.get("data/secondBackground.pack", TextureAtlas.class);
secondBackground = new Image(backgroundAtlas.findRegion("secondBackground"));
stage.addActor(secondBackground);
secondBackground.setFillParent(true);
Color secondBackgroundColor = secondBackground.getColor();
secondBackground.setColor(secondBackgroundColor.r, secondBackgroundColor.g, secondBackgroundColor.b, 0.5f);
skin = new Skin(Gdx.files.internal("data/uiskin.json"));
Gdx.input.setInputProcessor(stage);
final TextField textFieldNickName = new TextField("", skin);
textFieldNickName.setMessageText("Nick Name");
textFieldNickName.setAlignment(Align.center);
TextFieldStyle textFieldStyle = new TextFieldStyle();
FileHandle fontFile = Gdx.files.internal("data/arial.ttf");
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fontFile);
FreeTypeFontParameter parameter = new FreeTypeFontParameter();
parameter.size = 55;
parameter.genMipMaps = true;
FreeTypeBitmapFontData fontData = generator.generateData(parameter);
BitmapFont ftFont = generator.generateFont(parameter);
generator.dispose();
textFieldStyle.font=ftFont;
textFieldStyle.fontColor=Color.WHITE;
textFieldStyle.cursor = skin.newDrawable("cursor");
textFieldNickName.setStyle(textFieldStyle);
Button okButton = new TextButton("OK",skin);
Window nickNameWindow = new Window("Enter your nick name", skin);
nickNameWindow.setPosition(0, 0);
nickNameWindow.defaults().spaceBottom(10);
nickNameWindow.row().fill().expandX();
nickNameWindow.add(textFieldNickName).minWidth(stage.getWidth()/3).expandX().fillX();
nickNameWindow.row();
nickNameWindow.add(okButton).minWidth(100).expandX().fillX();
nickNameWindow.pack();
//nickNameWindow.setMovable(false);
stage.addActor(nickNameWindow);
nickNameWindow.setX(stage.getWidth()/2-nickNameWindow.getWidth()/2);
nickNameWindow.setY(stage.getHeight()/2+stage.getHeight()/4-nickNameWindow.getHeight()/2);
}
我是不是做错了什么或者这是 libgdx 中的错误?
我有一个 window,其中包含文本字段和一个按钮,用于从用户那里获取一些输入。 最初 Window 看起来不错,如下所示。
http://i.stack.imgur.com/ZDchq.png
当我调整 window 大小时,window 绘制正常,但 window 的 Widget 元素部分绘制,如下所示。
http://i.stack.imgur.com/NTpBN.png
这是我 Screen
的 show()
函数的代码
:
@Override
public void show() {
// TODO Auto-generated method stub
game.assetManager.load("data/secondBackground.pack", TextureAtlas.class);
game.assetManager.finishLoading();
stage = new Stage();
TextureAtlas backgroundAtlas = game.assetManager.get("data/secondBackground.pack", TextureAtlas.class);
secondBackground = new Image(backgroundAtlas.findRegion("secondBackground"));
stage.addActor(secondBackground);
secondBackground.setFillParent(true);
Color secondBackgroundColor = secondBackground.getColor();
secondBackground.setColor(secondBackgroundColor.r, secondBackgroundColor.g, secondBackgroundColor.b, 0.5f);
skin = new Skin(Gdx.files.internal("data/uiskin.json"));
Gdx.input.setInputProcessor(stage);
final TextField textFieldNickName = new TextField("", skin);
textFieldNickName.setMessageText("Nick Name");
textFieldNickName.setAlignment(Align.center);
TextFieldStyle textFieldStyle = new TextFieldStyle();
FileHandle fontFile = Gdx.files.internal("data/arial.ttf");
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fontFile);
FreeTypeFontParameter parameter = new FreeTypeFontParameter();
parameter.size = 55;
parameter.genMipMaps = true;
FreeTypeBitmapFontData fontData = generator.generateData(parameter);
BitmapFont ftFont = generator.generateFont(parameter);
generator.dispose();
textFieldStyle.font=ftFont;
textFieldStyle.fontColor=Color.WHITE;
textFieldStyle.cursor = skin.newDrawable("cursor");
textFieldNickName.setStyle(textFieldStyle);
Button okButton = new TextButton("OK",skin);
Window nickNameWindow = new Window("Enter your nick name", skin);
nickNameWindow.setPosition(0, 0);
nickNameWindow.defaults().spaceBottom(10);
nickNameWindow.row().fill().expandX();
nickNameWindow.add(textFieldNickName).minWidth(stage.getWidth()/3).expandX().fillX();
nickNameWindow.row();
nickNameWindow.add(okButton).minWidth(100).expandX().fillX();
nickNameWindow.pack();
//nickNameWindow.setMovable(false);
stage.addActor(nickNameWindow);
nickNameWindow.setX(stage.getWidth()/2-nickNameWindow.getWidth()/2);
nickNameWindow.setY(stage.getHeight()/2+stage.getHeight()/4-nickNameWindow.getHeight()/2);
}
我是不是做错了什么或者这是 libgdx 中的错误?