2015-02-06 36 views
2

這裏是我的問題。我試圖用LibGDX渲染一個紋理,它的位置和寬度都與屏幕大小有關。以下是我如何做到的:LibGDX spritebatch調整相對於屏幕尺寸

public void render(float delta) { 
    Gdx.gl.glClearColor(1, 0, 1, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

    batch.begin(); 
    batch.draw(logo.getKeyFrame(frame), (Gdx.graphics.getWidth()/2) - (logo.getKeyFrame(frame).getRegionWidth()/2), Gdx.graphics.getHeight() - logo.getKeyFrame(frame).getRegionHeight()); 
    batch.end(); 

    stage.act(delta); 
    stage.draw(); 
} 

@Override 
public void resize(int width, int height) { 
    stage.getViewport().update(width, height, true); 
} 

問題是,當我嘗試調整窗口大小時,圖像不會呈現在應該出現的位置。有沒有什麼辦法解決這一問題?

謝謝:)

+0

也許嘗試製作寬度和高度變量,並將它們設置爲它們在'resize()'中的新值。然後使用這些變量來設置圖像的大小。 – vedi0boy 2015-02-06 16:21:14

+0

@ vedi0boy我只是試過,沒有任何改變。我應該使用getRegionWidth()來獲取圖像的寬度? – Ferdz 2015-02-06 16:39:58

+0

我使用LibGDX很多,我從來沒有遇到過這個問題,因爲我使用'OrthographicCamera'和'StretchViewport',它的工作方式完全符合我向您展示的方式。如果您有興趣瞭解更多信息,請告訴我,我會告訴您如何設置它,以便您的屏幕能夠完美地在'resize()'上展開。 – vedi0boy 2015-02-06 18:20:14

回答

7

好吧我找到了解決我的問題的方法。我把它稱爲調整大小的方法

batch.getProjectionMatrix().setToOrtho2D(0, 0, width, height);