分辨率的选择是一个敏感的话题,特别的是我们使用的这个平台运行在分辨率范围从3英寸到10.1英寸的显示屏上。一般开发人员和用户喜欢游戏以完整的宽度和高度在设备上显示,但在某些情况下,我们可能需要仔细选择分辨率,以便正确地显示我们的场景。在本节中,我们要讨论各种分辨率,包括在AndEngine中,这将有助于我们决定可能最适合我们应用程序的需求。
1. 怎么做
我们选择在onCreateEngineOptions()方法中的EngineOptions作为参数。下面的代码创建了我们的EngineOptions对象:
public EngineOptions(final boolean pFullscreen,
final ScreenOrientation pScreenOrientation,
final IResolutionPolicy pResolutionPolicy,
final Camera pCamera)
参数说明:
- pFullscreen: 总为true,因为游戏要全屏显示
- pScreenOrientation: (LANDSCAPE 横屏) (PORTRAIT 竖屏)
- pResolutionPolicy : 告知Engine对象如何处理不同的设备屏幕大小
- RatioResolutionPolicy在保持原有长宽比不变的情况下尽可能地拉伸图像以填满屏幕。是最常用的方式,使用方法如下:
new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT)
- FillResolutionPolicy 忽略长宽比,直接填满整个屏幕。
- FixedResolutionPolicy 使用原有的固定图像大小,不进行缩放以适应不同屏幕大小。例如,如果我们设置构造函数的宽度为800,高度为480,在平板电脑上,分辨率为1280×752,我们会留下一个空的黑色区域。
- RelativeResolutionPolicy 将原图缩放到指定的倍数,如果要为某些特定设备开发,可以使用此参数,RelativeResolutionPolicy(1.5F),这将增加1.5倍的宽度和高度的比例。我们可以指定个别的宽度和高度,尺度,RelativeResolutionPolicy(1.5F,0.5F),要注意的是,我们必须小心的换算系数,缩放比例过大,将导致应用程序关闭而没有警告。尽量保持的比例因子小于1.8F。
- RatioResolutionPolicy在保持原有长宽比不变的情况下尽可能地拉伸图像以填满屏幕。是最常用的方式,使用方法如下:
- pCamera: 对象表示玩家观察场景所用的镜头,举例如下:
EngineOptions engineOptions = new EngineOptions(true, ScreenOrientation.LANDSCAPE_FIXED, new FillResolutionPolicy(), pCamera);