2016-03-21 7 views
0

Draw zur Zeit ich wie so ein Bildlauffenster voll funktionsfähig habe:Libgdx mehrere Akteure in einer Tabellenzelle Bildlauffenster

Picture of Level Screen

Nur die blauen Kästchen in der Mitte mit einem Bildlauffenster umgesetzt werden, so dass nur die Der mittlere Bereich des Bildschirms scrollt. Die Scroll-Scheibe ist wie so implementiert:

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

Das Problem ich habe, ist jede Box in einer Zelle gezogen wird (glaube ich) in der Tabelle und was ich tun muß, ist eine Schrift zeichnen mit (möglicherweise eine Textur zu) die Anzahl der Ebene auf das Feld wie folgt:

Level box with font draw on top

das Problem ist, ich oben auf dem Bildschirm nicht einfach ziehen kann, weil die Schrift, während der Benutzer nach unten scrollt die Tabelle statisch sein , also muss ich die Schriftart in die Tabelle einfügen, so dass sie mit der Tabelle scrollt, aber jedes Mal, wenn ich versuche, sie hinzuzufügen, kann sie nur als separate Zelle hinzugefügt werden und nicht auf Spitze einer bereits gezeichneten Zelle.

Gibt es eine Möglichkeit, eine Zelle über einer anderen Zelle zu zeichnen, so dass ich meine Schriftart in eine Zelle zeichnen und über meine Level-Box-Textur legen kann? Oder gibt es eine bessere Lösung für dieses Problem?

Antwort

0

Ich fand es heraus, Sie können die Etiketten in einer neuen Zeile unterhalb der Textur hinzufügen und verwenden, um es über die erste Zeile zu bringen. Ich zeichnete 3 Reihen, die erste war die Kisten, die zweite war die Level-Nummer und die dritte war die Anzahl der Sterne in dieser Ebene und .padTop() verwendet, um die letzten 2 Reihen über die erste Reihe zu bringen, damit es so aussieht, als wäre alles eine Reihe.

Endergebnis:

Completed level UI

Der Code (grob) unter:

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

}