2016-03-21 14 views
0

bir tablo hücre kaydırma bölmesinde oyuncuların çokluğu çiz:LibGDX Şu anda şöyle tamamen işlevsel bir kaydırma bölmesi vardır

Picture of Level Screen

ortada Sadece mavi kutular kaydırma bölmesi ile uygulanmaktadır, böylece sadece ekranın orta kısmı kaydırılır. Kaydırma bölmesi şöyle uygulanır:

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

Ben her kutuda bir tablodaki hücre (sanırım) ve ne ben bir yazı tipi kullanılarak çizmek yapmanız gereken çekilir edilir sahip sorun (muhtemelen bir doku da şöyle kutunun üstünde düzeyinin) numarası:

Level box with font draw on top

sorun yazı masaya aşağı kaydırma iken statik olacak çünkü ben sadece ekranın üst kısmındaki çekemez olduğunu Bu yüzden tabloya yazı tipini ekleyerek tabloya kaydırmam gerekiyor, ancak her eklemeye çalıştığımda sadece ayrı bir hücre olarak eklenebilir. önceden çizilmiş bir hücrenin tepesi.

Başka bir hücrenin üzerine bir hücre çizmenin bir yolu var mı? Böylece yazı tipimi bir hücreye çizebilir ve düzey kutusu dokumanın üzerine koyabilirim? Yoksa bu problem için daha iyi bir çözüm var mı?

cevap

0

Bunu çözdüm, etiketleri dokümanın altında yeni bir satıra ekleyebilir ve ilk satırın üzerine getirmek için table.add(texture).padTop(-200)'u kullanabilirsiniz. 3 satır çizdim, ilk kutucuklar, ikincisi seviye sayısı ve üçüncüsü bu seviyede elde edilen yıldız sayısı ve .padTop() ile son satırın ilk sıranın üzerine gelmesini sağlamak için kullandı. bir sıra.

Nihai Sonuç:

Completed level UI

kodu (kabaca) aşağıdaki gibidir:

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

}