2012-12-11 13 views
11

Tôi đang vẽ một bảng bằng cách sử dụng khung công tác trò chơi libgdx. Tất cả mọi thứ được kết xuất hoàn hảo những gì tôi đã cố gắng để đạt được. Tất cả những gì tôi cần bây giờ là hiển thị đường viền ô của bảng nhưng tôi không tìm thấy gì liên quan đến điều này cho đến nay. Tôi cũng có khuynh hướng sử dụng các đường biên giới gỡ lỗi để lấp đầy mục đích nhưng cũng không thể thay đổi màu của chúng.Vẽ các đường viền bảng trong libgdx 0.9.7

Đây là mã của tôi.

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; 

Có nhiều thuộc tính có sẵn cho bảng và ô nhưng không có thuộc tính đường viền. Chúng tôi cũng có thể vẽ các đường lưới theo cách thủ công nhưng điều đó sẽ không hoạt động hoàn hảo trên mọi độ phân giải thiết bị mà tôi nghĩ. Bất kỳ trợ giúp hoặc ý tưởng nào được đánh giá cao. Cảm ơn

Trả lời

6
  1. đăng ký bảng của bạn cho chế độ debug

    table.debug();

  2. Gọi trong render() phương pháp

    Table.drawDebug(stage);

Example

0

Tôi đã đạt được hiển thị các dòng gỡ lỗi bằng cách chuyển đổi từ sử dụng ShapeRenderer bằng cuộc gọi table.drawDebug(shapeRenderer shapes) (mà tôi không thể làm việc) để sử dụng stage và thêm bảng làm diễn viên.

Các example được liên kết trong câu trả lời ở trên hiển thị rõ ràng, nhưng đây là đoạn trích ngắn để tham khảo. Đây là trên 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

này được dựa trên libGDX 1.5.3:

Một giải pháp này là sử dụng một NinePatch làm hình nền cho Table của bạn.

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

Sử dụng biến số, bạn có thể sửa đổi bán kính đường viền. Đảm bảo rằng điều này khớp với tệp png.