我目前工作的一個的StartMenu爲我的第一個機器人比賽中居中並有3個問題,我目前遇到:Libgdx,舞臺犯規適應屏幕和按鈕不表
1)舞臺不適合屏幕。我已經嘗試將不同的視口類型(stretch-,fit,extendviewport)傳遞給舞臺構造器,但沒有一個真正按照我的意圖工作。我也爲視口嘗試了不同的參數(例如數字像480,800和Gdx.graphics.getWidth()),但我無法使菜單分辨率獨立(在s3 mini和華爲P8上嘗試),它要麼轉動太小或太大。
2)設置按鈕不在表格單元中居中。
3)按鈕更改大小。當按下時,它們會填充它們所在的單元格,如何禁用此功能? (ⅰ與JSON-文件中的按鈕皮膚限定,順便說一下,但我懷疑這是原因)
@Override
public void resize(int width, int height) {
stage.getViewport().update(width, height, true);
}
@Override
public void show() {
stage = new Stage(new ExtendViewport(Constants.VIEWPORT_GUI_WIDTH, Constants.VIEWPORT_GUI_HEIGHT));
Gdx.input.setInputProcessor(stage);
rebuildStage();
}
private void rebuildStage() {
skinStartMenu = new Skin(
Gdx.files.internal(Constants.SKIN_Start_Menu_UI),
new TextureAtlas(Constants.Start_Menu_Texture_Atlas));
Table layerControls = buildControlsLayer();
stage.clear();
Stack stack = new Stack();
stage.addActor(stack);
stack.setSize(Constants.VIEWPORT_GUI_WIDTH, Constants.VIEWPORT_GUI_HEIGHT);
stack.add(layerControls);
}
private Table buildControlsLayer() {
Table layer = new Table();
// + Play Button
btnMenuPlay = new Button(skinStartMenu, "play");
layer.add(btnMenuPlay);
btnMenuPlay.addListener(new ChangeListener() {
@Override
public void changed(ChangeEvent event, Actor actor) {
onPlayClicked();
}
});
layer.row();
// + Options Button
btnMenuOptions = new Button(skinStartMenu, "options");
layer.add(btnMenuOptions);
btnMenuOptions.addListener(new ChangeListener() {
@Override
public void changed(ChangeEvent event, Actor actor) {
onOptionsClicked();
}
});
if (debugEnabled) layer.debug();
return layer;
}
No Button Pressed; Button Pressed
編輯:我通過調整的細胞解決了第一個問題該表,但我仍然沒有問題2)和3)的解決方法。
你真的需要一個堆棧?它使佈局更加複雜。如果您想控制其定位,您必須將堆棧中的每個孩子都包裝在容器中。 – Tenfour04
其實我現在不需要它。但我不認爲這會有所作爲,所以我只是把它留在那裏,以防我將來可能需要它x) – Doflaminhgo