cocos2dx 多分辨率适配方案

原理:把背景图和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.多版本 。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值