Cocos2d-x3.8 - 屏幕适配

时间:2021-03-07 20:40:23

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():获取可视大小(不包括黑边)。