LibGDX - 可滚动表

时间:2017-08-20 14:56:33

标签: libgdx scene2d

在我的游戏中,我想绘制一个包含方块(如卡片)的2列表格,并在其上方,一个图像和两个标签(作为一行,在卡片的顶部,图像,在其下方一个标签)在另一个下方。)

如果我只在可滚动的表格中放置图像,我会得到所需的结果,但现在我尝试在背景上添加图像和标签。

我已经尝试定义一个Actor组并将其添加到表中,但是某些元素没有出现,也扩展了Image类并在onDraw方法中绘制了其他元素,但是文本没有。当用户滚动时,随着卡片背景移动。

我的表格代码如下:

Table scrollTable = new Table();
    scrollTable.align(Align.topLeft);

    scrollTable.add(new HighScoreItem(game, Colors.ORANGE, "1º:FER", 30))
            .width(190).height(150).space(30);
    scrollTable.add(new HighScoreItem(game, Colors.ORANGE, "1º:FER", 30))
            .width(190).height(150).space(30);
    scrollTable.row();

    scrollTable.add(new HighScoreItem(game, Colors.ORANGE, "1º:FER", 30))
            .width(190).height(150).space(30);
    scrollTable.add(new HighScoreItem(game, Colors.ORANGE, "1º:FER", 30))
            .width(190).height(150).space(30);
    scrollTable.row();

    scrollTable.add(new HighScoreItem(game, Colors.ORANGE, "1º:FER", 30))
            .width(190).height(150).space(30);
    scrollTable.add(new HighScoreItem(game, Colors.ORANGE, "1º:FER", 30))
            .width(190).height(150).space(30);
    scrollTable.row();

    scrollTable.add(new HighScoreItem(game, Colors.ORANGE, "1º:FER", 30))
            .width(190).height(150).space(30);
    scrollTable.add(new HighScoreItem(game, Colors.ORANGE, "1º:FER", 30))
            .width(190).height(150).space(30);
    scrollTable.row();

    scrollTable.add(new HighScoreItem(game, Colors.ORANGE, "1º:FER", 30))
            .width(190).height(150).space(30);
    scrollTable.add(new HighScoreItem(game, Colors.ORANGE, "1º:FER", 30))
            .width(190).height(150).space(30);
    scrollTable.row();

    ScrollPane scroller = new ScrollPane(scrollTable);
    Table table = new Table();
    table.setBounds(33, 10, 410, 500);
    table.add(scroller).fill().expand();

    getStage().addActor(table);

HighscoreItem是我用来显示表项的类。如果我用常规的Scene2D Image类替换这个类,一切都很好,但是尝试在背景上添加另一个图像和两个标签(通过使HighScoreItem从Group扩展或从Image扩展)是问题。 有关如何做到这一点的任何想法? 谢谢。

1 个答案:

答案 0 :(得分:0)

如果要将actor放在彼此之上,可以使用堆栈类。

Stack stack = new Stack();
stack.add( new Image( new Texture( "test.png" ) ) );
stack.add( new Label( "label 1", skin ) );
stack.add( new Label( "label 2", skin ) );
scrollTable.add( stack );

偏移量来自堆栈的左上角。