Cocos2d-x适配屏幕时,只需要知道以下两种定义:
1、窗口分辨率:目标设备的分辨率。
glview = GLViewImpl::createWithRect("helloworld", Rect(0, 0, frameSize.width, frameSize.height));
frameSize为目标设备的分辨率。
2、设计分辨率:项目设定的分辨率。
glview->setDesignResolutionSize(designSize.width, designSize.height, ResolutionPolicy::FIXED_HEIGHT);
designSize为设计的分辨率。
在做屏幕适配时,最有用的是setDesignResolutionSize方法。有3个参数:设计的宽、高以及适配模式。
Cocos2d-x提供了5种设计模式(在ResolutionPolicy域中定义):
1、EXACT_FIT:拉伸适配,铺满全屏。
2、SHOW_ALL:比例缩放,比例大的铺满全屏,比例小的留黑边。
3、NO_BORDER:比例缩放,比例小的铺满全屏,比例大的超出屏幕。
3、FIXED_WIDTH:比例缩放,按宽比适配。
4、FIXED_HEIGHT:比例缩放,按高比适配。
具体的计算方法可以参照以下方式:
窗口分辨率:Size(fWidth, fHeight)
设计分辨率:Size(dWidth, dHeight)
缩放因子:kw = fWidth/dWidth, kh = fHeight/dHeight
适配后的分辨率为:
1、EXACT_FIT:Size(dWidth*kw, dHeight*kh)。
2、SHOW_ALL:Size(dWidth*min(kw, kh), dHeight*min(kw, kh))。
3、NO_BORDER:Size(dWidth*max(kw, kh), dHeight*max(kw, kh))。
4、FIXED_WIDTH:Size(dWidth*kw, dHeight*kw)。
5、FIXED_HEIGHT:Size(dWidth*kh, dHeight*kh)。
最后区分一下Cocos2d-x中获取屏幕大小的方法:
1、Director::getInstance()->getWinSize():获取屏幕大小(目标设备分辨率)。
2、Director::getInstance()->getVisibleSize():获取可视大小(不包括黑边)。