2012-12-11 10 views
11

私はlibgdxゲームフレームワークを使用してテーブルを描画しています。私が達成しようとしていたものはすべて完全にレンダリングされています。私が今必要とするのは、テーブルのセルの境界線を表示することですが、これまでこれに関することは何も見つかりませんでした。私はまた、目的をフルフィルにデバッグの境界線を使用する傾向があるだけでなく、彼らの色を変更することはできませんでした。libgdxでの表の枠線の描画0.9.7

ここに私のコードです。

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; 

表とセルには多くのプロパティがありますが、境界プロパティはありません。 グリッド線を手動で描画することもできますが、それは私が思うすべてのデバイスの解像度では完全に動作しません。どんな助けやアイデアも高く評価されます。おかげ

答えて

6
  1. デバッグモードのためのあなたのテーブルを登録し

    table.debug();

  2. render()方法でコール

    Table.drawDebug(stage);

Example

0

私は、のtable.drawDebug(shapeRenderer shapes)コール(作業できなかった)を使用して、stageを使用してテーブルをアクターとして追加することによって、デバッグ行の表示を実現しました。

上記の回答でリンクされているexampleは明らかに表示されていますが、ここでは参考のための短いスニペットです。これは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

これはlibGDX 1.5.3に基づいています。

これに対する解決策は、あなたのTableの背景画像としてNinePatchを使用することです。

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

ボーダー半径を変更することができます。これがpngファイルと一致することを確認してください。