1

Backgroundtextures を処理する LibGDX で新しいプログラムを作成しており、画面の実装を開始したばかりです。しかし、テストすると、指定された解像度で黒くクリアされた画面が表示されます。実装された Game クラスの setScreen(screen)- メソッドで画面を呼び出します。

コードは次のとおりです。

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

}

4

2 に答える 2

2

@idaNakav は、show()の使用とステージの寸法の設定について正しいです。ただし、テーブルにサイズがないため、それでも黒い画面が表示されます。table.setFillParent(true)を含めるようにshow()コードを変更してみてください。

次のようになります (提供した例に基づくコード)。

@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);
}
于 2013-03-21T23:56:04.043 に答える
1

画面が現在の画面になると、showメソッドが呼び出されます(あなたの場合のように作成するのではなく)、createメソッドをshowに変更してみてください

また、ステージの初期化が間違っています。幅と高さを送信する必要があります。送信したのは 0,0 のようなものです

stage = new Stage(Gdx.graphics.getWidth(),Gdx.graphics.getHeight(),false);
于 2013-03-21T20:13:03.903 に答える