Проблема с отображением кнопок в LIBGDX

674
30 декабря 2016, 10:45

Всем привет. Проблема видна на картинках. При разрешении программы 800х600 все вроде нормально. Но стоит развернуть программу, то кнопки становятся большими! Если нажать на кнопку Screen_2(там такой же скрин) кнопки уменьшаются! Как сделать так, что бы при разворачивании окна сразу все применялось, а не при нажатии кнопки? В общем уже неделю ни чего сделать не могу с этим. гугл тоже не помог. Вот решил сюда написать вдруг кто то сможет помочь. Выкладываю скрины и весь код: Главный класс, запускается с разрешением 800х600:

public class RunGame extends Game {
    public SpriteBatch batch;
    public BitmapFont font;    
    TestCamera camera1;
    TestCamera2 camera2;
    @Override
    public void create() {
        batch = new SpriteBatch();
        font = new BitmapFont();
        camera2 = new TestCamera2(this);
        setScreen(camera1 = new TestCamera(this));
    }
    @Override
    public void resize(int width, int height) {
        super.resize(width, height);
    }
    @Override
    public void render() {
       super.render();
    }
}

Класс первого скрина:

    public class TestCamera implements Screen {
    final RunGame runGameTest;
    private Texture backText;
    private Skin skin;
    private Stage stage;
    private OrthographicCamera camera;
    private TextButton buttonNewGame;
    private TextButton buttonOptions;
    private TextButton buttonExit;
    public TestCamera(final RunGame runGameTest) {
        this.runGameTest = runGameTest;
        camera = new OrthographicCamera();
    }
    @Override
    public void show() {
        backText = new Texture(Gdx.files.internal("menu/menuScreen/background.jpg"));
        skin = new Skin(Gdx.files.internal("fonts/uiskin.json"));
        stage = new Stage();
        buttonNewGame = new TextButton("--------", skin, "default");
        buttonOptions = new TextButton("Screen_2", skin, "default");
        buttonExit = new TextButton("--------", skin, "default");
        buttonNewGame.setWidth(200f);
        buttonNewGame.setHeight(50f);
        buttonNewGame.setPosition(50, 240);
        buttonOptions.setWidth(200f);
        buttonOptions.setHeight(50f);
        buttonOptions.setPosition(50, 300f);
        buttonExit.setWidth(200f);
        buttonExit.setHeight(50f);
        buttonExit.setPosition(50, 360f);
        buttonNewGame.addListener(new ClickListener(){
            @Override
            public void clicked(InputEvent event, float x, float y){                                
            }
        });
        buttonOptions.addListener(new ClickListener(){
            @Override
            public void clicked(InputEvent event, float x, float y){
    ((Game)Gdx.app.getApplicationListener()).setScreen(runGameTest.camera2);                
            }
        });
        buttonExit.addListener(new ClickListener(){
            @Override
            public void clicked(InputEvent event, float x, float y){
                Gdx.app.exit();
            }
        });
        stage.addActor(buttonNewGame);
        stage.addActor(buttonOptions);
        stage.addActor(buttonExit);
        Gdx.input.setInputProcessor(stage);
    }
    @Override
    public void render(float delta) {
        Gdx.gl.glClearColor(0, 0, 0.0f, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        runGameTest.batch.setProjectionMatrix(camera.combined);
        camera.update();
                runGameTest.batch.begin();
                runGameTest.batch.draw(backText, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
                runGameTest.font.draw(runGameTest.batch, "FPS: " + Gdx.graphics.getFramesPerSecond(), Gdx.graphics.getWidth()-76, Gdx.graphics.getHeight()-20);
                runGameTest.font.draw(runGameTest.batch, "FULL SCREEN: F4 ", Gdx.graphics.getWidth()-150, Gdx.graphics.getHeight()-40);
                runGameTest.batch.end();
        stage.act();
        stage.draw();
    }
    @Override
    public void resize(int width, int height) {
        camera.setToOrtho(false, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
        stage.getViewport().update(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), true);
        camera.update();
    }
    @Override
    public void dispose() {
        Gdx.input.setInputProcessor(null);
        backText.dispose();
        stage.dispose();
        skin.dispose();
    }
    @Override
    public void pause() {
    }
    @Override
    public void resume() {
    }
    @Override
    public void hide() {
    }
}

Второй скрин идентичный первому! Прошу помочь кто сталкивался с этой проблемой.

Answer 1

Попробуйте так:

stage = new Stage(new ScreenViewport());
READ ALSO
Java.Swing. Закругление углов кнопки

Java.Swing. Закругление углов кнопки

Доброго времени сутокПодскажите,как можно закруглить края кнопки?

536
Как удвоить символы с помощью списка массивов

Как удвоить символы с помощью списка массивов

Есть список массивов и необходимо добавить 5 строк, а потом удвоить значение, чтобы получилось следующее:

597
Проблемы с Многопоточностью

Проблемы с Многопоточностью

Не могу решить задачу на многопоточностьМетоды run у разных потоков выполняются не "одновременно", а друг за другом, сначала один поток полностью...

430
Сортировка данных при работе с jsoup (Java)

Сортировка данных при работе с jsoup (Java)

Задача : Вывести на экран список из 10 городов с текущей температурой окружающей средыСписок вывести по алфавиту

518