cocos2dx 多分辨率适配方案
2016-09-01 11:29
218 查看
原理:把背景图和ui分离出来,背景图可被裁减,ui相对布局,不能被裁减。
实现:做cocos2dx游戏的都知道,引擎里面有几种适配模式 :EXACT_FIT NO_BORDER SHOW_ALL
FIXED_HEIGHT FIXED_WIDTH 具体在这里就不一一细说,总之游戏中不允许ui变形,不允许黑边,不允许ui被裁减,那么其实就只有两种选择:FIXED_HEIGHT FIXED_WIDTH。
设计分辨率宽高比为: designWidthHeighRatio 屏幕分辨率宽高比:deviceWidthHeightRatio
如果 designWidthHeighRatio > deviceWidthHeightRatio 即认为是宽屏(相对设计分辨率) 因为ui不能被裁减,所以用适配高的模式 即 FIXED_HEIGHT ,此时会有问题了,如果只用这一步,显然在高度上正好做到了适配,但是宽度上会有黑边,怎么办? 此时就要把ui层的大小设置为屏幕大小了,因为ui层的子节点用的是相对布局,所以ui层变大了,里面的组件,位置也会相对的偏移,即在ui层的左下角的还是在左下角。 这个就解决了ui布局,然后是背景图了,其实到了这里,大家应该很容易想到怎么解决背景图的适配问题了,背景图是允许裁减的,那么,如果是宽屏,则按照比例放大背景图,就解决了。 然后背景图锚点居中,永远设置位置在屏幕中间,一切都解决了。如果是 designWidthHeighRatio > deviceWidthHeightRatio 其实也就是高屏,一样,适配宽,ui层高度变大,背景,按照高度比率放大,举一反三的大家,肯定知道怎么解决了,这样一来,无论什么分辨率都能很好的解决。 完全实现了ui 永远相对屏幕布局,背景图铺满屏幕的需求。 其实这里面还有一个问题,没有解决,就是美术ui设计上如果出现了满宽,或者满高的ui,那么这个就要和美术商量对该ui部分进行拉伸处理了。可以让该ui的底图设计成一张九宫格图片,在程序里面动态的设置他的大小,同时让该ui底图的子节点位置设置为相对布局,哦对了,当父节点的大小改变了,需要执行ccui.helper.doLayout(widget) 主动调用 实现子节点偏移 。 这样就完全解决了适配问题。
补充:引擎用的是 3.12版本(估计3版本以上都可以) cocostudio 用的是 2.多版本 。
实现:做cocos2dx游戏的都知道,引擎里面有几种适配模式 :EXACT_FIT NO_BORDER SHOW_ALL
FIXED_HEIGHT FIXED_WIDTH 具体在这里就不一一细说,总之游戏中不允许ui变形,不允许黑边,不允许ui被裁减,那么其实就只有两种选择:FIXED_HEIGHT FIXED_WIDTH。
设计分辨率宽高比为: designWidthHeighRatio 屏幕分辨率宽高比:deviceWidthHeightRatio
如果 designWidthHeighRatio > deviceWidthHeightRatio 即认为是宽屏(相对设计分辨率) 因为ui不能被裁减,所以用适配高的模式 即 FIXED_HEIGHT ,此时会有问题了,如果只用这一步,显然在高度上正好做到了适配,但是宽度上会有黑边,怎么办? 此时就要把ui层的大小设置为屏幕大小了,因为ui层的子节点用的是相对布局,所以ui层变大了,里面的组件,位置也会相对的偏移,即在ui层的左下角的还是在左下角。 这个就解决了ui布局,然后是背景图了,其实到了这里,大家应该很容易想到怎么解决背景图的适配问题了,背景图是允许裁减的,那么,如果是宽屏,则按照比例放大背景图,就解决了。 然后背景图锚点居中,永远设置位置在屏幕中间,一切都解决了。如果是 designWidthHeighRatio > deviceWidthHeightRatio 其实也就是高屏,一样,适配宽,ui层高度变大,背景,按照高度比率放大,举一反三的大家,肯定知道怎么解决了,这样一来,无论什么分辨率都能很好的解决。 完全实现了ui 永远相对屏幕布局,背景图铺满屏幕的需求。 其实这里面还有一个问题,没有解决,就是美术ui设计上如果出现了满宽,或者满高的ui,那么这个就要和美术商量对该ui部分进行拉伸处理了。可以让该ui的底图设计成一张九宫格图片,在程序里面动态的设置他的大小,同时让该ui底图的子节点位置设置为相对布局,哦对了,当父节点的大小改变了,需要执行ccui.helper.doLayout(widget) 主动调用 实现子节点偏移 。 这样就完全解决了适配问题。
补充:引擎用的是 3.12版本(估计3版本以上都可以) cocostudio 用的是 2.多版本 。
相关文章推荐
- Unity2D多分辨率屏幕适配方案
- cocos2dx适配方案新解——秒杀所有分辨率
- 一种Unity2D多分辨率屏幕适配方案
- Unity2D多分辨率屏幕适配方案
- Cocos2dx-Android屏幕适配方案
- cocos2dx 多分辨率适配
- Unity2D多分辨率屏幕适配方案(转载)
- cocos2dx适配方案新解——秒杀所有分辨率
- cocos2dx屏幕适配方案
- 一种Unity2D多分辨率屏幕适配方案
- cocos2dx多分辨率适配解析
- 一种Unity2D多分辨率屏幕适配方案
- Unity2D多分辨率屏幕适配方案
- 【Unity开发】Unity2D多分辨率屏幕适配方案(IOS露出天空盒解决办法)
- 一种Unity2D多分辨率屏幕适配方案
- 【cocos2dx 3.3 lua】02 去掉调试信息以及多分辨率适配
- cocos2dx 多分辨率适配
- 一种Unity2D多分辨率屏幕适配方案
- cocos2dx适配方案新解——秒杀所有分辨率
- cocos2d-x 多分辨率适配详解(转载),以前北京团队设计的游戏,也是用这套方案