我正在玩LibGDX并试图建立一个简单的棋盘游戏。
public void show() {
width = Gdx.graphics.getWidth();
height = Gdx.graphics.getHeight();
viewport = new FitViewport(STAGE_WIDTH, STAGE_HEIGHT);
stage = new Stage(viewport);
sceneBoard = new GridSceneBoard(10, 30, GridBoardCell.Type.CHECKERED);
rootTable = new Table();
rootTable.setFillParent(true);
sceneBoard.setFillParent(true);
rootTable.add(sceneBoard);
stage.addActor(rootTable);
Gdx.input.setInputProcessor(stage);
}
GridSceneBoard
扩展了一个表格,方便地制作像棋盘一样的图像网格。 render方法如下:
public void render(float delta) {
// Set black background.
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
// Uncomment for table lines during debugging.
rootTable.debug();
sceneBoard.debug();
Table.drawDebug(stage);
stage.act(Gdx.graphics.getDeltaTime());
stage.draw();
}
我想嵌套表以获得更好的UI布局(最终),但是当我运行代码时,我得到:
我已经阅读过TableLayout的文档以及LibGDX的scene2d.ui文档,我做错了什么?我正在使用LibGDX 1.0。
答案 0 :(得分:2)
非常清楚文档[1]
通常,窗口小部件的大小由其父级设置,并且不得使用setFillParent。 setFillParent仅在窗口小部件的父级未设置其子级的大小(例如舞台)时方便使用。
所以,我基本上不应该sceneBoard.setFillParent(true)
。只有根表应填充其父表。
[1] https://github.com/libgdx/libgdx/wiki/Scene2d.ui#stage-setup