大家好我试图在Libgdx中使用Table显示一些图像但它没有正确显示它们我找不到解决方法
当我使用table.bottom
时,它会向下显示它们但是当我使用table.center
时它会显示它们更低,当我选择顶部,左侧或右侧时它显示什么都没有
:这是我格式化表格的代码:
public class MenuIcons {
public Viewport viewport;
public Stage stage;
public boolean upPressed;
public boolean leftPressed;
public boolean rightPressed;
public boolean levellock1,levellock2;
public Image lock1;
public Image lock2;
public OrthographicCamera camera;
public Table table;
//Constructor.
public MenuIcons(SpriteBatch spriteBatch) {
camera = new OrthographicCamera();
viewport = new FitViewport(400, 208, camera);
stage = new Stage(viewport, spriteBatch);
Gdx.input.setInputProcessor(stage);
initalizeTable();
}
public void draw() {
stage.draw();
}
public void resize(int width, int height) {
viewport.update(width, height);
}
public void initalizeTable()
{
//Buttons with images.
lock1 = new Image(new Texture("levellock.png"));
lock1.setSize(25, 25);
lock1.addListener(new InputListener() {
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
levellock1 = true;
return true;
}
@Override
public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
levellock1 = false;
}
});
lock2 = new Image(new Texture("levellock.png"));
lock2.setSize(25, 25);
lock2.addListener(new InputListener() {
@Override
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
levellock2 = true;
return true;
}
@Override
public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
levellock2 = false;
}
});
//Table with buttons.
table = new Table();
table.bottom; //Align to the left bottom.
table.add();
table.add();
table.add();
table.add(lock1).size(lock1.getWidth(), lock1.getHeight());
table.add(lock2).size(lock2.getWidth(), lock2.getHeight());
stage.addActor(table);
}
public boolean isLevellock1() {
return levellock1;
}
public boolean isLevellock2() {
return levellock2;
}
}
以下是我使用Table.bottom
时的图片:
以下是我使用Table.center
时的图片:
答案 0 :(得分:1)
我建议您阅读以下信息和示例: https://github.com/libgdx/libgdx/wiki/Table
这条线甚至不起作用?:table.bottom;
试试这个table.left().bottom();
代替table.bottom;
或者更好的是,您可以在添加时对齐各个项目,如下所示:
table.add(lock1).width(lock1.getWidth()).height(lock1.getHeight()).left().bottom();
注意:
为什么一遍又一遍地使用空白table.add();
?你不应该使用table.row()
吗?
编辑评论:
您需要为项目创建一个行或空格,而不是使用table.add();
。你正在给自己造成各种各样的问题。
在进一步之前,您需要在table.setDebug(true);
之后添加 table = new Table();
,以便了解自己在做什么。
现在试试这个:
table = new Table();
table.setDebug(true);
table.top().left();
table.add(lock1).width(lock1.getWidth()).height(lock1.getHeight()).left().top();
table.row();
table.row();
table.add(lock2).width(lock2.getWidth()).height(lock2.getHeight()).left().bottom();
现在您可以看到调试行,您可以看到出错的地方。在table.row();
之间添加一个空白标签,然后使用.expand();
,以便填充这样的空格:
table.row();
table.add(myBlankLabel).expandY();
table.row();
答案 1 :(得分:1)
在根表上调用table.setFillParent(true)
。否则,table.bottom()
之类的调用毫无意义,因为逻辑表在零大小的框内对齐。