我在使用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不适合屏幕,左右两端都有一些空格。 如何解决这个问题,?
答案 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);