我目前正在为我的第一款Android游戏开发StartMenu,我目前遇到了3个问题:
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)的解决方法。