1: 用一个设计分辨率来匹配不同的资源
直接修改setFrameSize
2:用一套资源来适配不同的设计分辨率
1: 背景适配
(1)第一种做法是把背景跟UI分开,背景手动放大,使背景超出屏幕位置。(做背景图片时应该把主要像素集中在背景的中心位置)
(2)第二种做法------ 拿宽度适配来举例:
因为是宽度适配,所以宽度会正好占满屏幕,此时可以把整个高度分成三部分来解决(把背景图片分出三张图)。 上--- 中----下,上面的图片拿代码固定在屏幕的最上方,下面的图片固定在屏幕的最下方,然后中间区域手动缩放比例。 此种做法优于第一种,不同手机比例看上去效果相同,但美术需要把一张背景图切割成三张。
2:UI适配
(1)第一种做法是UI全部拿代码写,可手动实现适配
(2)第二种做法是UI先拿cocos studio拼好,然后拿代码调整按钮的位置。
适配代码如下 :
void AppDelegate::adaptPhone(GLView *glview)
{
// 1920/1080 = 16:9 = 1.78 16:10 -> 16:9 16:12 -> 16:9
// 1280/800 = 16:10 = 1.6 所以如果宽度适配,高度显示不全 如果高度适配,宽度会有黑边
//资源大小
Size resSize = AppDelegate::designSize;//1136, 768为美术出图的尺寸
//屏幕大小
auto winSize = Director::getInstance()->getWinSize();
//x缩放比例
float widthScale = winSize.width / resSize.width;
//y缩放比例
float heightScale = winSize.height / resSize.height;
//背景图片 1136,768
if (widthScale > heightScale)// <
{
//1432,800 所有坐标都是相对于这个分辨率
glview->setDesignResolutionSize(resSize.width, resSize.height, ResolutionPolicy::FIXED_HEIGHT);
}
else
{
//1280,720 所有坐标都是相对于这个分辨率
glview->setDesignResolutionSize(resSize.width, resSize.height, ResolutionPolicy::FIXED_WIDTH);
}
//高度适配 -----1136,768会自动缩放成 1366,768
auto size = glview->getDesignResolutionSize();
log("");
}
参考链接:
http://www.zaojiahua.com/adaptation.html
http://blog.csdn.net/chinahaerbin/article/details/39586281
http://www.tairan.com/archives/4018/