位置: 编程技术 - 正文

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

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

  • 二手车经纪公司和中介的区别
  • 出口免税产品如何缴纳附加税
  • 采用现金支付
  • 采购的固定资产验收无误后直接安装使用
  • 一正一负发票是什么意思
  • 清算期间,公司是否可以经营
  • 抵债资产处置账务实例
  • 纸质承兑怎么收付
  • 发票认证完是不是没开票
  • 预收物业费是否必须开具发票
  • 企业注销前需要固定资产清理吗
  • 生产成本转入库存商品金额怎么算
  • 报销款冲抵其他应收款怎么做账?
  • 调拨资产入账按原值还是按净值
  • 车辆保养计入什么二级科目
  • 神州战神笔记本怎么进入不了bios
  • 全额抵扣的发票怎么申报增值税
  • 冲减以前年度营业外收入
  • 企业接受捐赠的固定资产账务处理
  • 旅客购买电子客票
  • 出口发票汇率按照报关单什么时间计算
  • 在XP中,为什么"网络连接"图标消失?
  • 如何关闭win10专业版自动更新
  • 委托代销商品的科目编码
  • 开发支出应属于什么科目
  • 微信小程序前端源码
  • PHP:mcrypt_generic_end()的用法_Mcrypt函数
  • 专项储备计提和使用
  • 应收账款的作用及其管理意义
  • 自定义max函数
  • 人工智能机器人保姆什么时候实现
  • 京东到家的物流模式
  • 基于matlab的随机森林回归和交叉验证
  • thinkphp和php
  • 未达起征点怎么填申报表
  • 税控服务费在电子税务局表一里怎么填写
  • 如何区分误餐费和补助费
  • 兼职算受雇吗
  • 一般纳税人怎样申请简易计税
  • <四>2:掌握Const 与一二级指针结合应用
  • 存货跌价准备的结转会计分录
  • 日用品开增值税专用发票可以抵扣吗
  • 出租车公共服务
  • 外购的商品用于生产经营
  • 如何理解合并报表编制程序中的调整与抵消处理
  • 税金及附加里面包含什么
  • 增值税发票怎么领取
  • var/lib/mysql
  • 教育费附加减免性质代码
  • 个体工商户营业执照申请流程
  • 附加税的印花税怎么计算
  • 代发的工资如何做账
  • 购买无形资产的手续费计入
  • 外商投资企业清算资金汇出环节,银行
  • 购买材料如何计提折旧
  • 售后租回会计处理分录
  • 企业注销固定资产清理税务处理
  • winserver2008开机启动
  • centos叫什么
  • boxjs
  • windows server 2008.
  • vistaie9安装所需更新补丁
  • 你所不知道的童话动画版免费观看
  • thinkpad预装的office怎么激活
  • aow.exe是什么进程
  • win10不是自己的账户
  • u盘启动安装xp系统教程
  • 思科用户模式命令
  • linux终端怎么用
  • win8.1无线
  • webpack-loader
  • exec方法
  • [置顶]bilinovel
  • unity做安卓app
  • vue路由跳转的钩子函数什么时候会用到
  • javascript module
  • python中读取文件
  • c# addin
  • 江苏国税电子税务局怎么申报
  • 云南省低保查询网上查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设