14

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

これが私のコードです。

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;

テーブルとセルに使用できるプロパティは多数ありますが、border プロパティは使用できません。グリッド線を手動で描画することもできますが、すべてのデバイス解像度で完全に機能するとは限りません。どんな助けやアイデアも大歓迎です。ありがとう

4

3 に答える 3

6

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

これに対する解決策は、NinePatchを の背景画像として使用すること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);

数値変数を使用して、境界線の半径を変更できます。これがpngファイルと一致することを確認してください。

于 2015-02-25T20:27:44.967 に答える
3
  1. デバッグ モード用にテーブルを登録する

    table.debug();

  2. 呼び出しrender()方法

    Table.drawDebug(stage);

于 2013-01-25T11:07:59.957 に答える
-1

ShapeRenderer呼び出しで aを使用するtable.drawDebug(shapeRenderer shapes)(これは機能しませんでした) から a を使用するように変換しstage、テーブルをアクターとして追加することで、デバッグ行の表示を実現しました。

上記の回答にリンクされているはそれを明確に示していますが、参考のために短いスニペットを示します。これは 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();
    }   
}
于 2015-01-30T03:46:49.523 に答える