Scene2d图像无法缩放

时间:2013-05-30 16:03:54

标签: java action libgdx scaling

我开始学习libgdx和它的scene2d,但我的splashScreen遇到了麻烦。我的淡入淡出动作完美无缺,但Image没有缩放(即使我在构造函数中添加了缩放)...

我有一个从png 512x512加载的纹理splashTexture,其真实图像是512x256,因此我创建了一个TextureRegion。 所有这一切都在我的show方法中完成:

@Override
    public void show() {
    super.show(); //sets inputprocessor to stage

    splashTexture = new Texture(SPLASHADR);

    // set the linear texture filter to improve the stretching
    splashTexture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
    splashTextureRegion = new TextureRegion(splashTexture, 0, 0, 512, 256);

}

然后在我的resize方法中出现以下内容:

@Override
public void resize(int width, int height) {
    stage.clear();
    Drawable splashTextureDrawable = new TextureRegionDrawable(
            splashTextureRegion);

    Image splashImg = new Image(splashTextureDrawable);

    splashImg.getColor().a = 0f;
    splashImg.addAction(Actions.sequence(Actions.fadeIn(0.5f),
            Actions.delay(2f), Actions.fadeOut(0.5f)));

    stage.addActor(splashImg);

}

这些是SplashScreen类中的函数,它扩展了AbstractScreen类(实际上具有渲染功能):

@Override
public void render(float delta) {
    stage.act(delta);

    Gdx.gl.glClearColor(0f, 0f, 0f, 1f);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    stage.draw();
}

欢迎任何想法,我一直在浏览javadocs并且还没有找到解决方案!

谢谢,

bnunamak

1 个答案:

答案 0 :(得分:5)

结帐stage.setViewport(float width, float height, boolean keepAspectRatio)。听起来您希望图像填满屏幕,因此将舞台的视口宽度/高度设置为图像的宽度/高度:

stage.setViewport(512, 256, false);

有关keepAspectRatio参数的说明,请参阅scene2d wiki article

  

setViewport有一个名为keepAspectRatio的参数,它只有一个   舞台大小和视口大小宽高比不同时的效果。如果   false,舞台被拉伸以填充视口,这可能会扭曲   纵横比。如果为true,则首先缩放舞台以适应舞台   最长维度的视口。接下来是较短的维度   加长以填充视口,从而保持纵横比   变化

如果这不是你想要的,那么这篇文章有一些不同的例子可以涵盖你需要的内容。