andengine activity bg不适合屏幕

时间:2013-08-13 05:20:43

标签: android andengine

我在使用andengine.

开发的简单游戏中为菜单页设置了bg
  

我已将bg设为

public class MenuActivity extends SimpleBaseGameActivity implements
    IOnMenuItemClickListener {

private static int CAMERA_WIDTH = 480;
private static int CAMERA_HEIGHT = 800;

private Camera mCamera;
private ITextureRegion mBackgroundTextureRegion;

protected static final int MENU_RESET = 0;
protected static final int MENU_QUIT = MENU_RESET + 1;
private Font mFont;
protected MenuScene mMenuScene;

private Scene mScene;


@SuppressWarnings("deprecation")
@Override
public EngineOptions onCreateEngineOptions() {
    final Display display = getWindowManager().getDefaultDisplay();

    this.mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);

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

@Override
protected void onCreateResources() {
    BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");


    try {
        ITexture backgroundTexture = new BitmapTexture(
                this.getTextureManager(), new IInputStreamOpener() {
                    @Override
                    public InputStream open() throws IOException {
                        return getAssets().open("gfx/bg3.png");
                    }
                });
        backgroundTexture.load();
        this.mBackgroundTextureRegion = TextureRegionFactory
                .extractFromTexture(backgroundTexture);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


}

@Override
protected Scene onCreateScene() {
    this.mEngine.registerUpdateHandler(new FPSLogger());
    this.mScene = new Scene();
    Sprite backgroundSprite = new Sprite(0, 0,
            this.mBackgroundTextureRegion, getVertexBufferObjectManager());
    // this.mScene.attachChild(backgroundSprite);
    this.mScene.setBackground(new SpriteBackground(backgroundSprite));


    return this.mScene;
}
  

并且bg不适合屏幕,左右两端都有一些空格。   如何解决这个问题,?

1 个答案:

答案 0 :(得分:10)

BaseResolutionPolicy决定AndEngine如何处理应用程序的显示宽度和 基于各种因素的高度:

  

FillResolutionPolicy: FillResolutionPolicy类是典型的   解决方案政策,如果我们只是希望我们的应用程序占用   显示器的全宽和高度。它可能会引起一些明显的影响   伸展,以便我们的场景占据全部可用   显示器的尺寸。

     

FixedResolutionPolicy: FixedResolutionPolicy类允许我们   为我们的应用程序应用固定的显示大小,无论大小   设备的显示或相机对象尺寸。这个政策可以   通过新的FixedResolutionPolicy传递给EngineOptions(pWidth,   pHeight),其中pWidth定义应用程序的最终宽度   视图将覆盖,而pHeight定义了最终的高度   应用程序的视图将涵盖。

     

RatioResolutionPolicy: RatioResolutionPolicy类是最好的   如果我们需要获得最大值,请选择解决策略   显示尺寸而不会造成任何精灵的扭曲。在另一   由于广泛的Android设备跨越了许多显示器   大小,有些设备可能会看到“黑条”   显示屏的顶部和底部,或左右两侧。

     

RelativeResolutionPolicy:这是最终的解决方案政策。这个   策略允许我们将更大或更小的缩放应用于   基于缩放因子的整体应用程序视图,其中1f为   默认值。

因此,如果您想要全屏,请使用FillResolutionPolicy,如下所示:

EngineOptions engineOptions = new EngineOptions(true,
ScreenOrientation.LANDSCAPE_FIXED, new FillResolutionPolicy(),
mCamera);