我开始学习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
答案 0 :(得分:5)
结帐stage.setViewport(float width, float height, boolean keepAspectRatio)
。听起来您希望图像填满屏幕,因此将舞台的视口宽度/高度设置为图像的宽度/高度:
stage.setViewport(512, 256, false);
有关keepAspectRatio
参数的说明,请参阅scene2d wiki article:
setViewport有一个名为keepAspectRatio的参数,它只有一个 舞台大小和视口大小宽高比不同时的效果。如果 false,舞台被拉伸以填充视口,这可能会扭曲 纵横比。如果为true,则首先缩放舞台以适应舞台 最长维度的视口。接下来是较短的维度 加长以填充视口,从而保持纵横比 变化
如果这不是你想要的,那么这篇文章有一些不同的例子可以涵盖你需要的内容。