[COCOS2DX-LUA]0-005.cocos2dx中关于全面屏和折叠屏的适配的一些见解
1.随着科技的发展,我们可以看到从iphoneX的刘海屏开始,引发了各种全面屏和异形屏的出现。这是科技的进步,但是对于各大的应用厂商来说,苦不堪言。
2.当然 ,吐槽归吐槽,我们还是要理智的去对待这个事件的,因为我们要对我们应用的用户负责,为我们的产品负责,为我们的money负责。
3.早在很久以前,当16:9,4:3, 3:2 等不同形状的屏幕的时候,我们用了showAll和黑边来适配我们的应用,但是由于影响美观,我们走上了适配的道路,毕竟科技是进步的。
4.前期的适配,我们选取了16: 9为基础的分辨率,采用了fixedWith去固定宽度,因为那会儿都是宽屏,我们选取宽高比最大的来做基准分辨率,那么我们固定的内容区域,一定是能够展示到屏幕内的,至于为什么,你们可以把上面的比例转换成一样的,比如宽度48,那么就是 48:27, 48:36, 48:32, 这样就容易理解了。
5.那么当全面屏适配出来后,从宽屏到长屏,16:9 继续发展为 18:9,16:9的fixedWidth明显不够显示18:9的内容, 而且后续还会有20:9,21:9,让我们吐血。
这个时候我不知道你们是怎么适配的,我为了保证以前产品的稳定性,我就针对16:9以上比例的产品进行了FixedHeight,你可以用第四点的方法算下,16:9的用FixedHeight一定是最合适的,因为长度一直变长。
接着我会计算出相对应的屏幕偏移量,然后把产品内容按比例横移,这个对于有canvas的creator就很棒了。我们手撸代码的绝对是噩梦,特别在产品矩阵巨大的情况下。
6.接下来谈谈折叠屏。
其实我们以上的2种屏幕适配方案,在这种手机上单独打开都是可以适配的,唯一要调整的就是背景图的大小。
7.但是问题来了,它要在你玩着游戏的过程中切换屏幕的大小,那么就是长屏和宽屏的切换,是不是哭晕厕所。GLview要实习切换,有的人说跟翻转屏幕一样做就行,但是,前提是你做了相对布局,以前也没想过会有这种问题啊。
8.后来我思考了一个方案,反正都是显示16:9的,那我就把layer设计成一个16:9的节点,其他精灵都防止在上面,背景图也是在上面居中显示。然后贴边精灵用相对屏幕的距离进行适配。万幸可以做,但是就是适配周期有点长。
9.大家对cocos适配有不同方案的可以回复里说说。
[COCOS2DX-LUA]0-005.cocos2dx中关于全面屏和折叠屏的适配的一些见解的更多相关文章
- Cocos2dx+lua合适还是Cocos2dx+js合适?
问题: 开发cocos2dx手游Cocos2dx+lua合适还是Cocos2dx+js合适 百牛信息技术bainiu.ltd整理发布于博客园 回答: 作者:廖宇雷链接:https://www.zhih ...
- cocos2d-x 3.0 在C++中调用lua函数
代码用的是<cocos2d-x 3.0 在lua中调用自定义类>中的代码. 在上篇的基础上进行扩充. 写lua函数 local function process_packet(user_d ...
- vue2.0在table中实现全选和反选
其实在去年小颖已经写过一篇:Vue.js实现checkbox的全选和反选 小颖今天在跟着慕课网学习vue的过程中,顺便试试如何在table中实现全选和反选,页面的css样式是直接参考慕课网的样式写的, ...
- react native Expo适配全面屏/Expo识别全面屏和正常屏
一.最新版本的expo已经默认支持了全面屏,即不会像react native cli一样出现底部黑边 二.但是全面屏通过Dimensions.get('window')获取的高度还是不准确,因为全面屏 ...
- cocos2d-x 3.0 在C++中调用lua函数(2)
个人觉得3.0里面, 在C++下面调用lua函数很不方便, 所以就扩展了一个类, 继承自LuaStack, 代码和使用方式如下: #ifndef __CC_LUA_STACKEX_H_ #define ...
- cocos2dx 3.0 scrollview 在android下面背景變綠色了
在windows上面跑的是OK的, 在android下面跑的時候就變成這樣子了:
- cocos2d-x lua 内存回收
使用cocos2d-x lua架构,游戏中存在两种内存回收方式. 1.cocos2d-x 本身内存回收 PS:假设在lua在创建一个类,继承cocos2d-x的一个类A,则该A也遵循cocos2d-x ...
- 7、Cocos2dx 3.0游戏开发找小三之3.0版本号的代码风格
重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27691337 Cocos2d-x代码风格 前面我们已 ...
- c++11特性与cocos2d-x 3.0之std::bind与std::function
昨天同事让帮忙写一小功能,才发现cocos2d-x 3.0 和 cocos2d-x 3.0rc0 差别还是相当大的. 发现Label这一个控件,3.0就比rc0版本多了一个创建函数,更为关键的是3.0 ...
随机推荐
- postman(介绍)
Postman 界面介绍 一. 安装后首次打开 postman,会提示你是否需要登录,登录的话可以云端保存你的收藏及历史记录,不登陆不影响使用. 二. 进入后就是如下图所示的界面了.看到这么多按钮 ...
- python——remove,del,pop三种删除元素方式的区别
记性不好,整理出来以作保存 1.remove ①直接删除元素,remove(obj),顺序删除第一个遇到的,所以想要全部删除 ,需要遍历 aList = [123, 'xyz', 'zara', 'a ...
- ln命令:软链接与硬链接的区别与应用
ln命令:软链接与硬链接的区别与应用 摘要 Linux系统中,链接是一个十分常见且实用的文件处理命令,它分为软链接和硬链接两种类型.软链接类似于Windows中的快捷方式,硬链接又有着与原文件保持同步 ...
- [NOI 2020 Online] 入门组T1 文具采购(洛谷 P6188)题解
原题传送门 题目部分:(来自于考试题面,经整理) [题目描述] 小明的班上共有 n 元班费,同学们准备使用班费集体购买 3 种物品: 1.圆规,每个 7 元. 2.笔,每支 4 元. 3.笔记本,每本 ...
- INotifyPropertyChanged接口
INotifyPropertyChanged 接口用于通知客户端,通常执行绑定的客户端,属性值已更改. 例如,考虑 Person 具有一个名为属性对象 FirstName. 若要提供通用的属性更改通知 ...
- spring Code(spring 核心)
一.spring的作用 spring 就是为了让我们以后能够做大的项目准备的.spring核心的功能就是一个工厂模式,spring相当于为你的项目专门成立一个一个工厂,这个工厂负责创建对象 ,维护对象 ...
- LTE网络概述
LTE主要由两部分组成:无线接入技术演进(E-UTRAN)+系统架构演进(SAE):其中,SAE主要含有的是演进型分组交换核心网(EPC),其控制处理部分为移动性管理实体(MME),数据承载部分称为业 ...
- 读源码之Spring 核心内容
为什么有这篇文档 工作两三年之后,总感觉什么东西都懂,但是什么东西又都不会.所以日常学习是很有必要的,俗话说学而不思则罔 ,思而不学则殆.所以我们要学思结合,学习的方法有很多,但是思考的深度或者说有没 ...
- Coursera课程笔记----P4E.Capstone----Week 2&3
Building a Search Engine(week 2&3) Search Engine Architecture Web Crawling Index Building Search ...
- 目前校园百晓生APP与CSDN软件的对比
不忘初心.注入灵魂 设计之初 在做校园百晓生该APP时,初心是为校园的同学提供便捷的查询校园信息的服务,确实目前的软件已经实现了该功能,但是总感觉缺少一些灵魂,感觉大部分人渴望的重点在于信息而不是自己 ...