2016-03-21 17 views
0

我現在有一個滾動窗格功能齊全,像這樣:LibGDX繪製一個表格單元格滾動窗格中選擇多個角色

Picture of Level Screen

只有在中間的藍色框與滾動窗格來實現,因此只有屏幕中間部分滾動。滾動窗格中實現像這樣:

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

我已經是每個盒子在細胞內(我相信)在表中,我需要做使用的字體是畫什麼畫的問題(可能是一個質地太)的水平在盒子的頂部,像這樣數量:

Level box with font draw on top

問題是我不能簡單地在屏幕的上方畫出因爲字體是靜態的,而用戶向下滾動表,所以我需要將字體添加到表格中,以便與表格一起滾動,但每次嘗試添加時都只能將其添加爲單獨的單元格,而不是已繪製的單元格的頂部。

有沒有在另一個單元格頂部繪製單元格的方法,這樣我就可以在一個單元格中繪製我的字體並將其放在我的水平框紋理上?或者有更好的解決方案來解決這個問題嗎?

回答

0

我想通了,你可以在紋理下面的新行添加標籤,並使用table.add(texture).padTop(-200)將它放在第一行。我畫了3排,第一排是盒子,第二排是層數,第三排是在該層次上達到的恆星數量,並使用.padTop()將最後2排放在第一排上,使它看起來像是所有一排。

最終結果:

Completed level UI

碼(粗略地)低於:

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

} 
相關問題