【问题标题】:LibGDX Draw multiple actors in one table cell scroll paneLibGDX 在一个表格单元格滚动窗格中绘制多个演员
【发布时间】:2016-03-21 17:16:42
【问题描述】:

我目前有一个功能齐全的滚动窗格,如下所示:

只有中间的蓝色框是用滚动窗格实现的,所以只有屏幕的中间部分滚动。滚动窗格的实现如下:

    final Table scrollTable = new Table();
    for (int j = 0; j < 60; j+=3) {
        for (int i = j; i < j+3; i++) {
            scrollTable.add(items.getValueAt(i).getImage()).center().padRight(80).size(200, 300).padBottom(70);
        }
        scrollTable.row();
    }

    final ScrollPane scroller = new ScrollPane(scrollTable);
    scroller.setScrollingDisabled(true, false);
    final Table table = new Table();
    table.setBounds(0, 300, GameWorld.gameWidth, GameWorld.gameHeight - 600);

    table.add(scroller);

    GameScreen.stage.addActor(table);

我遇到的问题是每个框都绘制在表格的一个单元格中(我相信),我需要做的是使用字体(也可能是纹理)绘制框顶部的级别数,例如所以:

问题是我不能简单地在屏幕上绘制,因为当用户向下滚动表格时字体将是静态的,所以我需要将字体添加到表格中以便它与表格一起滚动,但是每个当我尝试添加它时,它只能作为单独的单元格添加,而不是在已绘制的单元格之上。

有没有办法在另一个单元格上绘制一个单元格,这样我就可以在一个单元格中绘制我的字体并将它放在我的关卡框纹理上?或者有没有更好的办法解决这个问题?

【问题讨论】:

    标签: fonts libgdx textures scrollpane


    【解决方案1】:

    我想通了,您可以在纹理下方的新行中添加标签,并使用table.add(texture).padTop(-200) 将其置于第一行之上。我画了 3 行,第一行是方框,第二行是关卡编号,第三行是在该关卡中获得的星数,并使用 .padTop() 将最后两行放在第一行上方,使其看起来像都是一行。

    最终结果:

    代码(大致)如下:

    for (int j = 0; j < LevelFiles.maxLvl; j += 3) {
    
            //Level Boxes
            for (int i = j; i < j + 3; i++) {
                if(i == j)scrollTable.add(levelBoxes.getValueAt(i).getImage()).center().size(200, 300).padBottom(70);
                if(i == j+1)scrollTable.add(levelBoxes.getValueAt(i).getImage()).center().size(200, 300).pad(0, 100, 0, 100).padBottom(70);
                if(i == j+2)scrollTable.add(levelBoxes.getValueAt(i).getImage()).center().size(200, 300).padBottom(70);
            }
            scrollTable.row();
    
            //Fonts
            for (int i = j; i < j + 3; i++) {
                scrollTable.add(new Label(i+1 + "", l)).padTop(-450);
            }
            scrollTable.row();
    
            //Stars
            for (int i = j; i < j + 3; i++) {
                if((i+1) <= LevelFiles.maxLvl){
                    scrollTable.add(threeStars[i]).prefHeight(100).prefWidth(262).padRight(0).padTop(-200);
                }
            }
            scrollTable.row();
    
    }
    

    【讨论】:

      猜你喜欢
      • 2014-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-13
      • 2017-11-26
      • 1970-01-01
      相关资源
      最近更新 更多