2015-02-06 65 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);