位置: 编程技术 - 正文

cocos2dx 3.2 屏幕适配的理解(cocos2dx屏幕适配解决方案)

编辑:rootadmin

推荐整理分享cocos2dx 3.2 屏幕适配的理解(cocos2dx屏幕适配解决方案),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:cocos2dx 3.17,cocos2d屏幕适配,cocos2dx4.0教程,cocos2dx屏幕适配,cocos2dx设置窗口大小,cocos2dx屏幕适配解决方案,cocos2d屏幕适配,cocos2d屏幕适配,内容如对您有帮助,希望把文章链接给更多的朋友!

最近在读《我所理解的cocos2dx》一书,感觉挺不错的,推荐一下,以下理解有不少地方受书中内容启发。 这里只写我自己理解的部分,基础部分如果有不懂的,请参考cocos2dx官方文档,写得也很详细。cocos2dx官方文档

设计分辨率与缩放策略

cocos2dx 通过设置设计分辨率来支持多屏幕分辨率适配,引擎底层会根据当前实际的屏幕分辨率通过相应的缩放策略处理设计分辨率的缩放。

对于EXACT_FIT, NO_BORDER,SHOW_ALL,三种缩放方式现在项目中用得比较少。EXACT_FIT会拉伸资源,NO_BORDER适用于设计分辨率与屏幕分辨率长宽比例一致的情况,有些项目是使用了多套设计分辨率以及多套资源来保证屏幕接近等比缩放。SHOW_ALL则会导致较窄一边出现黑边。这三种方式的优点是UI的位置在屏幕中一旦确定,就不需要随着屏幕分辨率的不同而更改。

对于这三种方式,设计分辨率就是绘制区域的大小,屏幕绘制的原点是设计分辨率对应区域的原点。当出现黑边的时候,黑边是在绘图区域之外的,程序无法直接在黑边上面绘制一些背景,广告什么的。之前有见过一篇文章是介绍如何在黑边上面绘制,但步骤比较麻烦一点,有兴趣可以搜索一下。

常用的缩放策略对于FIXED_WIDTH,FIXED_HEGITH,两种缩放策略是目前项目中用得最多的两个。可能是2.0版本以后新增的方式,上面官方的接口注释中并没有加上这两种方式的说明。刚接触到这两种方式时,以为只是SHOW_ALL的两种特殊情况,因为在使用同一套资源时,使用SHOW_ALL或者是FIXED_WIDTH(FIWXED_HEIGHT)时,表面看起来并没有什么区别,有黑边还是同样有黑边,但后来看了setDesignResolutionSize的实现源码:

可以看到,使用FIXED_WIDTH(FIXED_HEGITH)方式,在保证了长宽缩放比例一致的情况下,修改了设计分辨率的尺寸!

cocos2dx 3.2 屏幕适配的理解(cocos2dx屏幕适配解决方案)

修改设计分辨率会带来两方面的影响:1,屏幕中的UI元素的坐标改变了。例如FIXED_WIDHT时,当设计尺寸为*的时候,把一个元素放到中心点*的位置,随着屏幕实际分辨率的变化,这个元素可能已经不在中心点的位置,可能往上平移了。所以如果UI元素有跟背景位置相关联的时候,就不能直接写绝对坐标了,而是要使这个坐标&#;能够适应这种屏幕变化。2,绘制区域改变了。改变设计分辨率就意味着绘制区域的改变,如果资源的分辨率没有改变,并且这个资源是对齐到屏幕中心点位置,那么屏幕上下(或者左右)就会留有黑边。为什么会有黑边,因为绘制区域已经大于资源的分辨率了,例如FIXED_WIDTH时,设计尺寸和资源(一张背景图)分辨率都是*,屏幕分辨率是*,那么setDesignResolutionSize后,设计分辨率就变成了*,这张背景图放到屏幕中心点后,高度与设计分辨率差了,所以上下会有像素区域没有任何图像可以绘制的。这就造成了跟使用SHOW_ALL一样的效果,但实质上却是区别很大,SHOW_ALL的黑边不能绘制,FIXED_XXX的黑边只是因为资源分辨率不够,而没有被绘制。如果这时候,把这张资源分辨率换成*,就会发现没有黑边了。完美适配屏幕。使用FIXED_XXX需要注意的问题:

1,使用一张更大的背景图,例如当前设计分辨率是*,使用FIXED_WIDTH方式,想要适配主流屏幕,背景图至少需要使用*分辨率,4:3的屏幕应该是市场上长宽比最小的了。这样屏幕上下就不会有黑边存在。

2,尽量不使用绝对坐标,但如果元素的位置是跟屏幕底部有关,那也可以使用绝对坐标。例如游戏分为上,中,下三部分区域,下面的区域不变,如果屏幕高度变化了,中间的区域就相对拉大一点(具体也要跟设计背景图以及游戏本身表现有关)。这样的话,最下面部分的UI元素完全可以使用绝对坐标。同样,也可以使用屏幕中心点上下偏移多少坐标,来设置元素位置。

3,使用visibleSize,它返回的始终是根据当前设备分辨率调整的可视区域的分辨率。

4,如果还是想使用*来设计坐标&#;,可以写个宏来计算坐标的偏移量。根据当前可视区域的高度与设计尺寸(*,不是引擎修改后的尺寸)的高度比来计算元素在拉伸后的坐标。以上问题根据项目的实际情况选择,只是自己的见解,有不足的请再帮忙补充一下。

资源分辨率的缩放假如项目使用了*的资源分辨率和设计分辨率,结果后面发现包体太大。想要改用*分辨率的资源来降低包体大小。这时候,便可使用方法:设置资源的缩放因子。当缩放因子是1时,表示1像素的图片资源将占用1像素的设计分辨率。按照上述分辨率,应设置缩放因子为/=0.,即图片资源显示在屏幕上时1像素的资源要占用屏幕上将近2像素的分辨率。同时,资源的长度和宽度也会按比例拉伸,所以程序中需要依赖资源的contentSize来设置位置的时候,需要按照宽度或者高度的几分之几来设置。例如一张图片是*的,按照如上设置后,在程序中获取的宽度和高度可能是*了。 Texture2D的getContentSize方法将纹理的实际分辨率转化为了设计分辨率。另外,当使用LabelAtlas类,会在一张图片里存入0到9等字符,根据ASCII码用来显示游戏中的得分或者其他数字效果。这种是要依赖每个数字在图片中的区域。但是当这张图片被拉伸后,宽度有可能为浮点数,或者不能被里面的元素整除。这个时候,显示效果就会出现数字部分重叠。解决方法就是要把这张图片的分辨率设计成两者都可兼容的分辨率。

第一次发技术贴,请大家多指教,有问题一起讨论!

自动释放池是吗,是否可以这样模仿,超简单,嘿嘿 喵聊几cocos2dx3.2引擎关于自动释放池里面的源码,感觉也不过如此,不知是否理解正确,这篇文章也许不正确,但完全是出于个人的理解,我可不负什么

解决Android客户端运行Cococs2dx编写的游戏程序遇到的意外游戏中断导致的游戏黑屏问题 今天,在Android客户端运行的游戏,按HOME键,或者是意外终止游戏以后,再次返回游戏就会出现黑屏的问题,查找了好多资料,试验了好多办法,终于发

Cocos2dx -lua QuickXDev拓展 用cocos2d-x做开发的话,用的最多的开发语言就是c/lua了,而现在公司很多都比较看重开发速度,较多的公司都选择了lua作为开发语言,同时lua的热更新也

标签: cocos2dx屏幕适配解决方案

本文链接地址:https://www.jiuchutong.com/biancheng/372599.html 转载请保留说明!

上一篇:cocos2dx移植到android碰到的问题(cocos2d转unity难吗)

下一篇:自动释放池是吗,是否可以这样模仿,超简单,嘿嘿(自动释放池原理,本质)

  • 定期定额户申报表怎么填
  • 展会补贴收入会计处理
  • 小规模残疾人交多少税收
  • 残保金上年在职职工工资总额怎么填
  • 小微企业免税收入有哪些
  • 职工取暖费可以一次性发放吗
  • 办理会员卡套路消费
  • 周年庆典布置现场
  • 公司用现金发放工资在税法上合规吗
  • 海关特许权使用费 公告
  • 停车场增加收入
  • 收据大写要写整吗
  • 预提 冲销
  • 建筑业购买材料入什么会计科目
  • 红字发票如何填写摘要
  • 税务缴纳滞纳金处罚依据
  • 先开票还是先预约
  • 网络不通怎么拼ip
  • 利润表营业成本是负数是什么原因
  • 发生以前年度损益调整
  • 公积金补缴上月算断缴吗
  • mac苹果系统怎么用
  • php变量底层实现
  • win10更新kb5006670
  • 受限制用户怎么解决
  • PHP:pg_client_encoding()的用法_PostgreSQL函数
  • layui表格编辑功能
  • 一个php请求的执行过程
  • 带息应收票据会计处理
  • 分配利润的会计处理
  • 公章是否必须备案
  • 如何用html编写一个简单的网页
  • 命令arp-a
  • /ncrc命令
  • php7.2新特性
  • 公司交社保国家承担吗
  • 林木苗圃
  • 资产负债表与利润表之间的关系
  • 金税盘到上传截止日期
  • java timestamp localdatetime
  • 供应商质量考核评估表样板
  • 纳税减免申报
  • access调用sql
  • 个人提供劳务增值税专用发票
  • 高铁票丢失了可以补打吗
  • 跨年租金如何处理
  • 一般纳税人增值税结转账务处理
  • 单位收风险金违法吗
  • 纳税人将购买的货物分配给股东,因该货物购买时已缴纳
  • 个人转租房屋需要交房产税吗
  • 车间消耗品的会计分录
  • 电子增值税发票样本
  • 公司与公司之间可以借款吗
  • 小规模开票免税额度是多少
  • 知识产权代理所代理
  • 核定征收需要带什么资料
  • 公司增资有什么作用
  • sqlserver如何查看操作日志
  • mssql导出数据库
  • MySQL关于exists的一个bug
  • windows安装设置
  • win7系统怎么更新到win10
  • 64位win8怎么安装南天PR2E针式打印机驱动?
  • 如果不用2b橡皮擦2b铅笔 能扫的出来吗
  • windows active directory功能
  • 苹果电脑打不开txt
  • 怎么删除隐藏文件夹win 10
  • 后缀是nb是什么程序
  • unity物体移动速度怎么设置
  • opengl出错
  • shell脚本-ge
  • nodejs test
  • vue js 页面代码分离
  • javascript零基础入门
  • 请问在javascript程序中
  • android:exported 属性详解
  • 买楼送地下室划算吗
  • 2020年砂石
  • 内蒙古城镇土地使用税税率表
  • 福建省个人所得税申报系统
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设