位置: 编程技术 - 正文

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难吗)

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

  • 应补退税额较少是什么意思
  • 农产品加工企业怎样申请营业执照?
  • 北京增值税发票网上申领流程
  • 印花税一般计入管理费用
  • 印花税退税减半征收会计分录怎么写?
  • 税盘连接服务器失败130008
  • 建筑企业预交的附加税怎么办
  • 主营业务收入体现在资产负债表哪里
  • 实际缴纳所得税时应借记什么账户
  • 债券到期收益率计算器
  • 2021年停车费税率
  • 个人独资企业注册流程
  • 纸质发票如何查看电子发票
  • 委托其他公司开票收款
  • 行政单位财务长期挂账处理办法
  • 公司投资另一个公司的投资款怎么入账
  • 公司注册成功以后会有什么费用
  • 购买货物运费怎么做分录
  • 企业所得税税负怎么算
  • 普票记账联可以报销吗
  • 反倾销税由谁缴纳
  • 固定资产产权转移
  • 利润分配的途径
  • 发票跨年了还能认证吗
  • 哪些企业可以享受加计扣除
  • RSync文件备份同步 Linux服务器rsync同步配置图文教程
  • 非正常损失为什么不赔偿
  • 单位租房的房租怎么入账
  • 音量图标不显示怎么回事
  • macOS Big Sur 11.1 开发者预览版 Beta 2推送更新
  • 贷款房屋评估费怎么收
  • 怎样改善现金流量比率
  • 零基础java从入门到精通
  • 哪些收入不纳税
  • 买新车注意事项与提车流程
  • vue中的组件有几类
  • vue手机端
  • 企业租赁房屋怎么开票
  • 低值易耗品报废年限几年
  • vue axios 拦截器
  • 记账凭证错误用什么更正
  • vports命令
  • 应纳税所得额调整金额怎么算
  • 年终奖是以工资形式发放吗
  • 公司租赁车辆的保险费可以扣除
  • python cox
  • 常用的收集数据方法有
  • 应付职工薪酬中的职工是指
  • 租赁合同印花税率多少
  • sqlserver2005数据库备份
  • 小规模纳税人批发零售税率
  • 发票做账流程
  • 小规模纳税人零售收入含税吗
  • 固定资产溢余账务处理
  • 会计学中递延收益的概念
  • 收到投资款如何声明
  • 外贸企业的退税可以转出来吗
  • 补交增值税税款怎么做账
  • 增值税期末留抵退税什么意思
  • 各大银行网银转账限额
  • 运输途中丢失的物品赔偿
  • 还账准备计提方法
  • 银行退票业务
  • 吸收的三种方式
  • mysql5.5.27安装教程与配置
  • win7系统开机屏幕出现一条蓝色横杠闪烁
  • 1.cpp执行的是什么文件
  • naimag32.exe - naimag32是什么进程 有什么用
  • fdisk硬盘分区工具
  • win8怎么运行命令
  • cocos2dx开发的游戏
  • shell(bash)下“time” 命令的输出详解
  • 全面了解中国历史英文
  • js对象常用方法
  • 安卓键盘软件
  • unity官方插件
  • jquery弹出窗口
  • python的读取和写入
  • First Class: UI of Android
  • 烟台税务热线电话查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设