位置: 编程技术 - 正文

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

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

  • 天猫提现一直没到账
  • 小规模纳税人公户的钱怎么转出来
  • 增值税专用发票电子版
  • 社保基数申报怎么看是否成功
  • 换出交易性金融资产入账价值
  • 工程服务增值税税率1%
  • 固定资产40%部分能抵即征即退项目吗
  • 安置残疾人加计扣除
  • 房屋折旧计提完成价格还能调整吗
  • 进项大于销项的会计分录怎么做?
  • 小微企业免税销售额和其他免税销售额
  • 应收账款对应的科目有哪些
  • 清算固定资产处置方案
  • 不应抵扣的进项税抵扣了怎么办
  • 公司茶水间备的零食该计入什么会计科目核算?
  • 未达起征点的增值税要交所得税吗
  • 年底没有取得发票企业所得税
  • 研发费用税点是什么意思
  • 农民工工资怎么交个人所得税
  • 个人如何申报初级医师职称
  • 存货变卖残值取得的收益计入哪个科目
  • 取得高新技术企业
  • iphone微信透明壁纸怎么设置
  • 工程暂估收入入账的会计分录
  • 公司出售已经提完折旧的机器
  • 诺曼底作战
  • 潘塔纳尔湿地的成因
  • 什么是融资租赁型校园贷
  • 老板垫付的货款会计分录
  • 增值税申报时,里面没有数据怎么办
  • php面向对象的理解
  • IIS 7.5 asp Session超时时间设置方法
  • 设计协会是干什么的
  • 6372056181电子退库收入
  • 结转成本费用的会计分录是什么?
  • 交上年企业所得税多少
  • 集团公司如何收管理费
  • 进口商品销售的会计分录
  • 托盘账务处理
  • MySQL中Distinct和Group By语句的基本使用教程
  • mongodb使用案例
  • 织梦添加文章如何修改高级参数
  • 织梦官方网站
  • 预付账款主要核算哪些内容
  • 不抵扣发票可以转抵扣吗
  • 营业额包括成本价吗
  • 建筑安装个人所得税征收管理办法
  • 事业单位长期应付款呆账怎样处理好
  • 什么人可以申请免税
  • 以非现金资产清偿债务的方式下,债权人
  • 汽车销售行业印章要求
  • 会计 借方 贷方
  • 股权变更的股东个税缴纳
  • 购买产品样品计入什么科目
  • 购买银行理财产品的几个必须知道
  • 发票打印机多少钱一套
  • 怎么看懂自己的收入纳税
  • 根据企业
  • 企业预付账款是什么意思
  • mysql5.7.
  • bios开机密码怎么关闭
  • 怎样设置windows不更新
  • freebsd怎么样
  • svn怎么切换用户名
  • 免费获取验证码
  • win10系统的文件夹选项在哪里
  • 11月 Win8.1 Update 3更新哪些内容?开始菜单依然没有
  • cocos2djs教程
  • easyui下拉列表
  • AutoPainting
  • javascript开发自学
  • android开发之apritag
  • 如何在脚本中调字体
  • javascript 对象
  • spring mvc jsp
  • 装修时候需要交什么费
  • 一般纳税人预缴税款怎么计算
  • 国家税务总局广州市税务局
  • 消费税包装物押金和增值税一致吗
  • 财税[2016]36号文营业税改征增值税试点实施办法
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设