由于各种智能手机的屏幕大小都不一致,会出现同一张图片资源在不同的设备分辨率下显示不一样的问题。为避免这样的情况,需要Cocos引擎能提供多分辨率的支持,也就是说要求实现这样的效果 — 开发者不需要考虑程序实际运行在什么分辨率下而只需要制定设置好设计分辨率就行,接着引擎便会自动实现设计分辨率(DesignSize)到屏幕分辨率(FrameSize)的转化,以及不同资源分辨率到设计分辨率的转化。
1.在适配过程中必须明确几个概念:
①Frame大小:这个值在windows/mac/linux下就是创建窗体的大小,在手机上就是屏幕大小。
设置方式:这里我们设置一个全局的变量(这个是iphone5/5s的分辨率)。
static cocos2d::Size g_frame_size = cocos2d::Size(1136, 640);
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if(!glview) {
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_MAC) || (CC_TARGET_PLATFORM == CC_PLATFORM_LINUX)
glview = GLViewImpl::createWithRect("ScreenFix", Rect(0, 0, g_frame_size.width, g_frame_size.height)); //这里设置窗体大小
#else
glview = GLViewImpl::create("ScreenFix"); //这里就是手机屏幕大小
#endif
director->setOpenGLView(glview);
}
获取方式:
Size cur_frame_size = Director::getInstance()->getOpenGLView()->getFrameSize();
②Design分辨率大小: