2017-08-20 45 views
1

在我的游戏中,我想绘制一个包含正方形(如卡片)的2列表格,并在它们上方绘制一个图像和两个标签(作为行,位于卡片顶部图像下面是一个标签,下面是另一个标签)。LibGDX - 可滚动表上的演员组

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

我试过定义一个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来实现)是问题所在。 关于如何做到这一点的任何想法? 谢谢。

回答

0

如果你想渲染演员在彼此之上,你可以使用栈类。

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); 

偏移量位于堆栈的左上角。