2

私は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);
}

aGridSceneBoardは Table を拡張して、チェス盤のようなイメージのグリッドを便利に作成します。レンダリング方法は次のとおりです。

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を使用しています。

4

1 に答える 1

4

その非常に明確なドキュメント[1]

通常、ウィジェットのサイズはその親によって設定され、setFillParent を使用してはなりません。setFillParent は、ウィジェットの親がその子 (ステージなど) のサイズを設定しない場合にのみ便利です。

だから、私は基本的に決して持つべきではありませんsceneBoard.setFillParent(true)。ルート テーブルのみがその親を埋める必要があります。

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

于 2014-05-12T23:25:24.190 に答える