2012-12-11 14 views
11

Sto disegnando una tabella usando il framework di gioco libgdx. Tutto è reso perfettamente ciò che stavo cercando di ottenere. Tutto ciò di cui ho bisogno ora è di mostrare i bordi delle celle del tavolo ma finora non ho trovato nulla riguardo a questo. Sono anche incline a usare le linee di bordo di debug per completare lo scopo ma non posso nemmeno cambiarne il colore.Bordi della tavola da disegno in libgdx 0.9.7

Ecco il mio codice.

Table table = new Table(); 
table.setFillParent(true); 
table.left().top(); 

table.add(new Label("Results", new LabelStyle(font, Color.BLACK))).colspan(2).expandX(); 
table.row(); 
table.add(new Label(text_you_score, new LabelStyle(font, Color.BLACK))); 
table.add(new Label(text_actual_score, new LabelStyle(font, Color.BLACK))); 
return table; 

Ci sono molte proprietà disponibili per la tabella e la cella ma non la proprietà del bordo. Possiamo anche disegnare le linee della griglia manualmente ma non funzionerà perfettamente su ogni risoluzione del dispositivo, penso. Qualsiasi aiuto o idea è molto apprezzato. Grazie

risposta

6
  1. Iscrivere il vostro tavolo per la modalità di debug

    table.debug();

  2. Chiamata in render() metodo

    Table.drawDebug(stage);

Example

0

Ho ottenuto la visualizzazione delle linee di debug convertendo dall'uso di ShapeRenderer con la chiamata table.drawDebug(shapeRenderer shapes) (che non riuscivo a far funzionare) all'utilizzo di stage e aggiungendo la tabella come attore.

Il numero example collegato nella risposta sopra lo mostra chiaramente, ma qui c'è un breve frammento di riferimento. Questo è su 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

Questo si basa su libGDX 1.5.3:

Una soluzione a questo è quello di utilizzare un NinePatch come immagine di sfondo per il vostro Table.

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

Utilizzando le variabili numeriche, è possibile modificare il raggio del bordo. Assicurarsi che questo corrisponda al file png.