2016-12-28 48 views
0

問題在圖片中可見。使用800x600分辨率的程序一切看起來都很正常但是有必要部署該程序,按鈕很大(大)!如果按下按鈕Screen_2(有相同的屏幕)按鈕縮小(小)!如何一次性應用所有的窗口,而不是當您按下按鈕時?一般來說,一週或我可以用它做什麼。谷歌也沒有幫助。這是決定寫在這裏,也許有人能夠提供幫助。傳播屏幕和所有代碼:顯示屏中的按鈕更改Libgdx

的主類的800x600分辨率開始:

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

類第一SCREEN_1:

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

第二個Screen_2與第一個相同!請幫助任何人面對這個問題。

回答

0

我的問題已解決 - stage = new Stage(new ScreenViewport()); 而且camera必須轉移到主類! 感謝所有