2012-12-11 5 views
11

Ich zeichne eine Tabelle mit libgdx Spiel-Framework. Alles ist perfekt wiedergegeben, was ich erreichen wollte. Jetzt brauche ich nur noch die Zellgrenzen des Tisches, aber bisher habe ich dazu noch nichts gefunden. Ich bin auch geneigt, die Debug-Grenzlinien zu verwenden, um den Zweck zu erfüllen, aber konnte auch nicht die Farbe von ihnen ändern.Zeichnung Tabelle Grenzen in libgdx 0.9.7

Hier ist mein Code.

Es gibt viele verfügbare Eigenschaften für die Tabelle und Zelle, aber nicht für die Eigenschaft border. Wir können auch Gitterlinien manuell zeichnen, aber das funktioniert nicht perfekt bei jeder Geräteauflösung, denke ich. Jede Hilfe oder Idee wird sehr geschätzt. Dank

Antwort

6
  1. Tisch für den Debug-Modus Registrieren

    table.debug();

  2. Anruf in render() Methode

    Table.drawDebug(stage);

Example

0

Ich habe die Anzeige der Debug-Zeilen erreicht, indem ich einen ShapeRenderer mit dem table.drawDebug(shapeRenderer shapes) Aufruf (den ich nicht zur Arbeit bekommen konnte) mit einem stage umwandeln und die Tabelle als Akteur hinzufügen.

Die in der obigen Antwort verlinkte example zeigt es deutlich, aber hier ist ein kurzer Ausschnitt als Referenz. Dies ist auf libGDX 1.5.3.

public class MyGdxGame extends ApplicationAdapter { 

    Texture img; 
    Stage stage; 

    @Override 
    public void create() { 
     img = new Texture("badlogic.jpg"); 
     stage = new Stage(); 
     final Skin skin = new Skin(); 

     Label.LabelStyle style = new Label.LabelStyle(new BitmapFont(),Color.WHITE); 
     TextField.TextFieldStyle textFieldStyle = new TextField.TextFieldStyle(); 
     textFieldStyle.fontColor = Color.WHITE; 
     textFieldStyle.font = new BitmapFont(); 

     skin.add("default", style); 
     skin.add("default", textFieldStyle); 
     // Keep your code clean by creating widgets separate from layout. 
     Label nameLabel = new Label("Name:", skin); 
     TextField nameText = new TextField("",skin); 
     Label addressLabel = new Label("Address:", skin); 
     TextField addressText = new TextField("",skin); 

     Table table = new Table(); 
     table.add(nameLabel);    // Row 0, column 0. 
     table.add(nameText).width(100); // Row 0, column 1. 
     table.row();      // Move to next row. 
     table.add(addressLabel);   // Row 1, column 0. 
     table.add(addressText).width(100); // Row 1, column 1. 

     table.setOriginX(0); 
     table.setOriginY(0); 
     table.setX(200); 
     table.setY(200); 
     table.debug(); 

     stage.addActor(table); 
    } 

    @Override 
    public void render() { 
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
     stage.act(Gdx.graphics.getDeltaTime()); 
     stage.draw(); 
    } 

    public void resize (int width, int height) { 
     stage.getViewport().update(width, height, true); 
    } 

    public void dispose() { 
     stage.dispose(); 
    } 
} 
3

Dies basiert auf Libgdx 1.5.3:

Eine Lösung dieses Problems ist für Ihre Table ein NinePatch als Hintergrundbild zu verwenden.

NinePatch patch = new NinePatch(new Texture(Gdx.files.internal("background.png")), 
    3, 3, 3, 3); 
NinePatchDrawable background = new NinePatchDrawable(patch); 

Table table = new Table(); 
table.setBackground(background); 

Mithilfe der Zahlenvariablen können Sie den Grenzradius ändern. Stellen Sie sicher, dass dies mit der PNG-Datei übereinstimmt.