专职C++

不能停止的脚步

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  136 Posts :: 7 Stories :: 134 Comments :: 0 Trackbacks

常用链接

留言簿(13)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

60天内阅读排行

原文地址:http://www.ityran.com/archives/2911

DesignResolutionSize

DesignResolutionSize是一个比较重要的概念,其实2.0版本的适配跟1.0版本原理差不多,都是按比例进行缩放。这个DesignResolutionSize表示设计方案,就是你的游戏完美支持的分辨率方案,一般根据图片资源的尺寸来定,自适配时会按照这个分辨率计算出缩放因子。因此,它让一切与坐标,尺寸相关的数据彻底摆脱了屏幕分辨率的束缚,或者说

由框架层来帮开发者完成转换,开发者需要的只是设置designResolutionSize。告诉框架你在什么样尺寸的场景下

做的资源,比如此例,背景图原始尺寸480×320,需求是刚好填满屏幕,那么就应该告诉框架“嗨,我设计时是以

480×320的屏幕为标准的,你帮我转转”,框架就会回答你“放心吧!” 那么框架究竟如何实现的呢? 跟踪

pEGLView->setDesignResolutionSize(480, 320, kResolutionNoBorder);

可以发现,框架是获取了实际分辨率和开发者designResolutionSize的比例,渲染的时候把图片按照这个比例来缩放绘制。

拿本例来说,屏幕960×640,designResolutionSize为480×320,缩放比例为2,那么原始大小480×320的背景图,在绘制

时就会x2来绘制,也就是实际绘制成了960×640的大小,这样就填满窗口了!

 

三种适配策略:

kResolutionNoBorder:超出屏幕的部分会被裁剪,两侧没有黑边,铺满屏幕,按图片原始比例显示,图片不变形。实际就是宽高等比缩放,但缩放比例取宽比和高比之中大的那一个。

 

使用kResolutionNoBorder策略时要注意的

CCSize szVisible = CCDirector::sharedDirector()->getVisibleSize();

CCPoint posVisible = CCDirector::sharedDirector()->getVisibleOrigin();

使用该策略时,因为标准背景图可能会超出屏幕,所以设置位置时需要已一个可视矩形为基准。

可以这样理解,szVisible就是你在实际设备上能看到的有效区域的宽高,posVisible就是这个有效区域的起始坐标,和szVisible构成一个可视矩形,一般来说这个可视矩形是设计分辨率下可视矩形的子集。

 

kResolutionShowAll:整个游戏界面是可见的,会按原始比例进行缩放,图片不变形,但两侧可能会留有黑边,不铺满屏幕。实际也是宽高等比缩放,但缩放比例取宽比和高比之中小的那一个。

kResolutionExactFit:整个游戏界面是可见的,图片可能会进行拉伸或者压缩处理,铺满屏幕,图片会变形。

可以根据自己的要求选择。1024:768=1.3, 480:320=1.5,宽高比不同,图片也就无法等比缩放来填满屏幕,只能变形了。

 

VisibleSize和VisibleOrigin

getVisibleSize:表示获得视口(可视区域)的大小,如果DesignResolutionSize跟屏幕尺寸一样大,则getVisibleSize等于getWinSize。

getVisibleOrigin:表示可视区域的起点坐标,这在处理相对位置的时候非常有用,确保节点在不同分辨率下的位置一致。

 

设置相对位置

在游戏中使用相对位置设置坐标的好处是显而易见的,这样就不需要为每个分辨率都定义一套坐标了。首先得定义一些参考点,引擎的TestCpp例子中就提供了一种方法,

比如设计分辨率为480×320,设置一个sprite的位置为240,160,在480×320分辨率下会发现它在屏幕正中,

模拟其他分辨率,960×640,1024×768,会发现它依然在屏幕中心,这就可了解240,160这个值跟实际屏幕分辨率已经无关了,

只和designResolutionSize有关,理解这一点至关重要,是后续开发正确空间感的基础!

 

getWinSize()的变化

CCDirector::sharedDirector()->getWinSize();

posted on 2014-02-03 13:22 冬瓜 阅读(889) 评论(0)  编辑 收藏 引用 所属分类: 转贴cocos2dx

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理