AKever

导航

Cocos2dx(1)-屏幕自适应

不得不说Cocos2dx提供了很好的手机屏幕自适应方案

(1)适配策略
kResolutionNoBorder超出屏幕的部分会被裁剪,两侧没有黑边,铺满屏幕,按图片原始比例显示,图片不变形。
kResolutionShowAll整个游戏界面是可见的,会按原始比例进行缩放,图片不变形,但两侧可能会留有黑边,不铺满屏幕。
kResolutionExactFit整个游戏界面是可见的,图片可能会进行拉伸或者压缩处理,铺满屏幕,图片会变形。

(2)VisibleSize和VisibleOrigin
getVisibleSize:表示获得视口(可视区域)的大小,如果DesignResolutionSize跟屏幕尺寸一样大,则getVisibleSize等于getWinSize。
getVisibleOrigin:表示可视区域的起点坐标,这在处理相对位置的时候非常有用,确保节点在不同分辨率下的位置一致。

(3)DesignResolutionSize
DesignResolutionSize是一个比较重要的概念,其实2.0版本的适配跟1.0版本原理差不多,都是按比例进行缩放。这个DesignResolutionSize表示设计方案,就是你的游戏完美支持的分辨率方案,一般根据图片资源的尺寸来定,自适配时会按照这个分辨率计算出缩放因子。因此,这个值也应该是动态的,如果是横屏游戏则高度肯定是铺满屏幕的,宽度也要尽可能的铺满屏幕,因此应该选择宽高比最大的作为设计分辨率,下面的demo会给出使用方法。

(4)手机的各种分辨率(红色为关键部分)

320X240(已经基本上没人用了,不过我的三星5670就是)(320/240=1.3333; 4:3)
480X320  现在最主流的低端安卓机都是这个分辨率,不过该分辨率比率和iphone一样为3:2(480/320=1.5; 3:2)
640X460  早起的安卓机子在用,现在已经基本没有了(640/460=1.3913; 32:23)
800X480  现在最主流的中高端安卓智能机的分辨率,包括 windows phone也是这个分辨率(800/480=1.6666; 5:3)
854X480 这个是WFVGA,是480X800的加长版(854/480=1.77916666; 427:240)
960X540 HTC的高端机很喜欢用这个分辨率也就是qHD了(960/540=1.7777; 16:9)
960X640 很少用,只有夏普和魅族的M9等寥寥几款机子用过,不过却是最经典的iphone所使用的分辨率(960X640=1.5; 3:2)

1136×640 iphone5s分辨率
1280X720 传说中的HD,也是现在各品牌主流旗舰机型的分辨率,而且屏幕都很大。(1280/720=1.7777; 16:9)
1280X800 现在只有三星的9220的5.3英寸巨屏用了这以分辨率(1280X800=136; 8:5)

1024X768 (iPad)

代码实现:

在AppDelegate.cpp文件的AppDelegate::applicationDidFinishLaunching()函数中添加以下代码。

//designSize设置为480x320,是项目新建是默认的大小,在main.cpp里面设置,这里设置为与main.cpp里面的大小,而界面的开发也在这个分辨率下开发!当然,这个可以自行设置,参考以上分辨率
CCSize designSize = cocos2d::CCSizeMake(480, 320);//
pEGLView->setDesignResolutionSize(designSize.width, designSize.height, kResolutionShowAll); //适配方案参考适配策略
CCSize winSize = CCDirector::sharedDirector()->getWinSize();//获取屏幕大小
float ratio = winSize.height/designSize.height;
pDirector->setContentScaleFactor(ratio);

参考:http://blog.csdn.net/go_to_learn/article/details/8302699

posted on 2013-12-25 23:47  AKever  阅读(363)  评论(0)    收藏  举报