繁体   English   中英

AndEngine完整图片背景(宽度和高度)

[英]AndEngine Full Image Background (width and height)

我真的是Android游戏开发的新手,我面临着有关屏幕图像背景的问题。

这是扩展SimpleBaseGameActivity完整类代码
更新了与​​图像尺寸对应的相机宽度和高度

private final int CAMERA_WIDTH = 480;//800;
private final int CAMERA_HEIGHT = 836; //1280;

private Camera mCamera;

//Background variables
private TextureRegion region;

private Scene mScene;

@Override
public EngineOptions onCreateEngineOptions() {
    this.mCamera = new Camera(0,0,CAMERA_WIDTH,CAMERA_HEIGHT);

    return new EngineOptions(true, ScreenOrientation.PORTRAIT_SENSOR, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), this.mCamera);
}

@Override
protected void onCreateResources() throws IOException {
    BitmapTextureAtlas atlas = new BitmapTextureAtlas(this.getTextureManager(),CAMERA_WIDTH+CAMERA_WIDTH,CAMERA_HEIGHT+CAMERA_HEIGHT);

    this.region = BitmapTextureAtlasTextureRegionFactory.createFromAsset(atlas,this,"snow_bg.png",0,0);
    atlas.load();

}

@Override
protected Scene onCreateScene() {
    this.mEngine.registerUpdateHandler(new FPSLogger());

    this.mScene = new Scene();
    Sprite sprite = new Sprite(0,0,region,this.getVertexBufferObjectManager());
    this.mScene.setBackground(new SpriteBackground(sprite));

    return this.mScene;
}

我面临的问题是背景图片,它不是全屏显示。 我一直在寻找如何在AndEngine拉伸图像背景,但是我没有找到任何好的资源。

这是屏幕截图。

在此处输入图片说明

但是图像全屏视图是

在此处输入图片说明

请给我一些建议,以实现目标。

提前致谢。

首先:可爱的背景! 第二:您的区域尺寸应为2的幂(256x256、1024x512、2048x2048等)。 第三:您的图片尺寸是多少? 它们与您的相机的宽度或高度相同吗? 如果没有,您可以这样做:

mScene.setBackground(new SpriteBackground(this.mCamera, new Sprite(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT, this.region))); . 

通常的想法是设置背景尺寸,而不仅仅是背景位置,因为背景尺寸不会自动拉伸到屏幕尺寸。

多亏了sukasz Motyczka,我才得以通过制作精灵来实现

float centerX = CAMERA_WIDTH/2;
float centerY = CAMERA_HEIGHT/2;

Sprite sprite = new Sprite(centerX,centerY,this.region, this.getVertexBufferObjectManager());


这是我的完整代码

private final int CAMERA_WIDTH = 480;
private final int CAMERA_HEIGHT = 836;

private Camera mCamera;
private TextureRegion region;

private Scene mScene;

@Override
public EngineOptions onCreateEngineOptions() {
    this.mCamera = new Camera(0,0,CAMERA_WIDTH,CAMERA_HEIGHT);

    return new EngineOptions(true, ScreenOrientation.PORTRAIT_SENSOR, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), this.mCamera);
}

@Override
protected void onCreateResources() throws IOException {
    BitmapTextureAtlas atlas = new BitmapTextureAtlas(this.getTextureManager(),CAMERA_WIDTH,CAMERA_HEIGHT);
    this.region = BitmapTextureAtlasTextureRegionFactory.createFromAsset(atlas,this,"snow_bg.png",0,0);
    atlas.load();

}

@Override
protected Scene onCreateScene() {
    this.mEngine.registerUpdateHandler(new FPSLogger());

    this.mScene = new Scene();
    float centerX = CAMERA_WIDTH/2;
    float centerY = CAMERA_HEIGHT/2;

    Sprite sprite = new Sprite(centerX,centerY,this.region, this.getVertexBufferObjectManager());
    this.mScene.setBackground(new SpriteBackground(sprite));

    return this.mScene;
}

改变这个

Sprite sprite = new Sprite(0,0,region,this.getVertexBufferObjectManager());

Sprite sprite = new Sprite(0, 0, region,getWidth(), region.getHeight(), region, this.getVertexBufferObjectManager());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM