Актер со столом, помещенным в стол (LIBGDX) - PullRequest
0 голосов
/ 29 марта 2020
  • У меня есть основная таблица A
  • У меня есть первая строка в таблице A с новой таблицей B
  • У меня есть вторая строка в таблице A с актером C содержащий Таблицу D

Содержимое Таблицы B и D равны. Единственное отличие состоит в том, что таблица D находится в актере:

Вопрос: почему актер не правильно расположен? Он расположен в левом нижнем углу таблицы A (таблица A = синяя). Могли бы вручную позиционировать актера C, но я бы хотел понять, что здесь не так.

enter image description here

Код:

Table outerTable = createOuterTable(font, skin);
outerTable.debug();
outerTable.setPosition(200,200);
stage.addActor(outerTable);

private Table createTable_B(BitmapFont font){
    Table table = new Table();
    Label.LabelStyle labelStyle = new Label.LabelStyle(font, new Color(Color.GREEN));
    Label firstlabel = new Label("Table B row 1", labelStyle);
    Label secondlabel = new Label("Table B row 2", labelStyle);
    table.add(firstlabel);
    table.row();
    table.add(secondlabel);
    table.debug();
    return table;
}

private Table createOuterTable(BitmapFont font, Skin skin){
    Table table = new Table();
    TableActor actor_C = new TableActor(skin);
    table.add(createTable_B(font)).pad(20);
    table.row();
    table.add(actor_C).pad(20);
    table.debug();
    return table;
}

public class TableActor extends Group {

    private final BitmapFont font;

    public TableActor(Skin skin) {
        font = skin.get(Label.LabelStyle.class).font;
        Table table = createInnerTable(font);
        addActor(table);
        setTransform(false);
    }

    private Table createInnerTable(BitmapFont font){
        Table table = new Table();

        Label.LabelStyle labelStyle = new Label.LabelStyle(font, new Color(Color.GREEN));
        Label firstlabel = new Label("Table D row 1", labelStyle);
        Label secondlabel = new Label("Table D row 2", labelStyle);

        table.add(firstlabel);
        table.row();
        table.add(secondlabel);
        table.debug();
        return table;

    }

1 Ответ

0 голосов
/ 29 марта 2020

Используйте Container вместо Group и проверьте код в Container, чтобы понять, что не так, когда используется только Group.

...