【发布时间】:2019-07-20 23:32:32
【问题描述】:
我正在尝试将工具栏按钮粘贴到屏幕的右上角,但每当我调整窗口大小时,按钮都会保持在相同的绝对位置(相对于左下角)。
调整大小之前:
调整大小后:
这是生成UI按钮的方法(目前只在Screen的构造函数中调用):
private void generateUiToolbar(){
// Toolbar Table
Table table = new Table();
table.setFillParent(true);
table.top();
table.right();
// Menu button
table.row();
Texture myTexture = new Texture(Gdx.files.internal("ui/stamp.png"));
TextureRegion myTextureRegion = new TextureRegion(myTexture);
TextureRegionDrawable myTexRegionDrawable = new TextureRegionDrawable(myTextureRegion);
ImageButton menuButton = new ImageButton(myTexRegionDrawable);
menuButton.addListener( new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
stage.clear();
generateUiMenu();
}
});
table.add(menuButton).size(60,60).padTop(10).padRight(10);
stage.addActor(table);
}
这是 resize() 方法:
public void resize(int width, int height) {
stage.getViewport().update(width, height, true);
stage.getCamera().viewportWidth = width;
stage.getCamera().viewportHeight = height;
stage.getCamera().position.set(stage.getCamera().viewportWidth / 2, stage.getCamera().viewportHeight / 2, 0);
stage.getCamera().update();
}
变量阶段在构造函数中以stage = new Stage();启动
出于某种原因,stage.getViewport().update(width, height, true); 没有做任何事情。当我在调整大小后打印stage.getWidth() 时,它将返回相同的数字。一般来说,更新按钮或演员位置的好方法是什么?简单地清除舞台并再次生成 UI 对我来说是行不通的,因为有时当您调整大小时,当前会显示不同的演员。如果我遗漏了任何信息,请告诉我。
编辑 1:
如答案中所述添加了table.setFillParent(true);,但这也没有解决。
编辑 2:
在阅读了答案和 cmets 之后,我删除了 stage.getCamera() 操作,但我仍然没有得到正确的结果。当我仅使用代码行 stage.getViewport().update(width, height, true); 调整大小时会发生这种情况:
【问题讨论】:
标签: java user-interface libgdx position