LibGDX游戏板网格嵌套表

时间:2014-05-05 23:26:16

标签: nested libgdx tablelayout scene2d

我正在玩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布局(最终),但是当我运行代码时,我得到:

enter image description here

我已经阅读过TableLayout的文档以及LibGDX的scene2d.ui文档,我做错了什么?我正在使用LibGDX 1.0。

1 个答案:

答案 0 :(得分:2)

非常清楚文档[1]

  

通常,窗口小部件的大小由其父级设置,并且不得使用setFillParent。 setFillParent仅在窗口小部件的父级未设置其子级的大小(例如舞台)时方便使用。

所以,我基本上不应该sceneBoard.setFillParent(true)。只有根表应填充其父表。

[1] https://github.com/libgdx/libgdx/wiki/Scene2d.ui#stage-setup