2013-03-21 67 views
1

我正在编写一个LibGDX处理Backgroundtext的新程序,并且刚刚开始实现这些屏幕。但是当我测试它时,它只显示给定分辨率的黑屏。 我使用setScreen(屏幕) - 实现的Game类中的方法调用屏幕。LibGDX Tablelayout菜单不显示

所以这里是代码:

public class MenuScreen implements Screen{ 
Table table; 
Stage stage; 
TextButton button; 
TextField textField; 
Texture texture; 
Pic2Box2d game; 

public MenuScreen(Pic2Box2d gameH) 
{ 
    this.game = gameH; 
    stage = new Stage(0, 0, true); 
    table = new Table(); 
} 
public void create() 
{ 
    final TextFieldStyle fieldStyle = new TextFieldStyle(new BitmapFont(), Color.WHITE, new BitmapFont(), Color.GRAY, null, null, null); 
    textField = new TextField("path", fieldStyle); 
    final TextButtonStyle buttonStyle = new TextButtonStyle(); 
    buttonStyle.font = new BitmapFont(); 
    buttonStyle.fontColor = Color.WHITE; 
    buttonStyle.pressedOffsetY = 1f; 
    buttonStyle.downFontColor = new Color(0.8f, 0.8f, 0.8f, 1f); 
    button = new TextButton("Übernehmen", buttonStyle); 
    button.setClickListener(new ClickListener() { 
     @Override 
     public void click(Actor actor, float x, float y) { 
      if(textField.getText() != "" && textField.getText() != "path") 
      { 
      texture = new Texture(textField.getText()); 
      game.setScreen(new Workscreen(texture)); 
      } 
     } 
    }); 
    table.row(); 
    table.add(textField); 
    table.add(button); 
    stage.addActor(table); 
} 
@Override 
public void render(float delta) { 
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); 
    Gdx.gl.glClearColor(0, 0, 0, 1); 
    stage.act(Gdx.graphics.getDeltaTime()); 
    stage.draw(); 
} 

}

回答

2

@idaNakav关于使用show()和设置阶段尺寸是正确的。但是,这仍然会给你一个黑屏,因为你的桌子没有任何大小。尝试更改您的显示()代码以包含table.setFillParent(true)

它应该看起来像这样(代码基于您提供的示例)。

@Override 
public void show() { 
    final TextFieldStyle fieldStyle = new TextFieldStyle(new BitmapFont(), Color.WHITE, null, null, null); 
    textField = new TextField("path", fieldStyle); 
    final TextButtonStyle buttonStyle = new TextButtonStyle(); 
    buttonStyle.font = new BitmapFont(); 
    buttonStyle.fontColor = Color.WHITE; 
    buttonStyle.pressedOffsetY = 1f; 
    buttonStyle.downFontColor = new Color(0.8f, 0.8f, 0.8f, 1f); 
    button = new TextButton("Übernehmen", buttonStyle); 
    button.addListener(new ClickListener() { 
     @Override 
     public void clicked(InputEvent event, float x, float y) { 
      if (textField.getText() != "" && textField.getText() != "path") { 
       texture = new Texture(textField.getText()); 
       game.setScreen(new Workscreen(texture)); 
      } 
     } 
    }); 


    table.row(); 
    table.add(textField); 
    table.add(button); 

    // Make the table fill the stage. 
    table.setFillParent(true); 

    stage.addActor(table); 
} 
+0

这就是它...除了忘记我的“游戏”类中的“@Override”语句:D – Siggy1000 2013-03-23 15:42:51

1

当屏幕正在成为当前屏幕show方法被调用(不创建一个像你的情况),请尝试更改您的创建方法来显示

还您是init阶段错了,你应该把它的宽度和高度,你送0,0 尝试像

stage = new Stage(Gdx.graphics.getWidth(),Gdx.graphics.getHeight(),false); 
+0

黑屏以及...这是不是解决办法:/ – Siggy1000 2013-03-21 20:16:41

+0

尽我编辑的答案,也确保节目被称为 – idanakav 2013-03-21 20:35:54

+0

它也没有工作。最后一个布尔值是“拉伸”的布尔值,所以它没关系,我先输入的内容,它总是被拉伸到屏幕大小... – Siggy1000 2013-03-21 20:54:49