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中关于全面屏和折叠屏的适配的一些见解的更多相关文章

  1. Cocos2dx+lua合适还是Cocos2dx+js合适?

    问题: 开发cocos2dx手游Cocos2dx+lua合适还是Cocos2dx+js合适 百牛信息技术bainiu.ltd整理发布于博客园 回答: 作者:廖宇雷链接:https://www.zhih ...

  2. cocos2d-x 3.0 在C++中调用lua函数

    代码用的是<cocos2d-x 3.0 在lua中调用自定义类>中的代码. 在上篇的基础上进行扩充. 写lua函数 local function process_packet(user_d ...

  3. vue2.0在table中实现全选和反选

    其实在去年小颖已经写过一篇:Vue.js实现checkbox的全选和反选 小颖今天在跟着慕课网学习vue的过程中,顺便试试如何在table中实现全选和反选,页面的css样式是直接参考慕课网的样式写的, ...

  4. react native Expo适配全面屏/Expo识别全面屏和正常屏

    一.最新版本的expo已经默认支持了全面屏,即不会像react native cli一样出现底部黑边 二.但是全面屏通过Dimensions.get('window')获取的高度还是不准确,因为全面屏 ...

  5. cocos2d-x 3.0 在C++中调用lua函数(2)

    个人觉得3.0里面, 在C++下面调用lua函数很不方便, 所以就扩展了一个类, 继承自LuaStack, 代码和使用方式如下: #ifndef __CC_LUA_STACKEX_H_ #define ...

  6. cocos2dx 3.0 scrollview 在android下面背景變綠色了

    在windows上面跑的是OK的,  在android下面跑的時候就變成這樣子了:

  7. cocos2d-x lua 内存回收

    使用cocos2d-x lua架构,游戏中存在两种内存回收方式. 1.cocos2d-x 本身内存回收 PS:假设在lua在创建一个类,继承cocos2d-x的一个类A,则该A也遵循cocos2d-x ...

  8. 7、Cocos2dx 3.0游戏开发找小三之3.0版本号的代码风格

    重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27691337 Cocos2d-x代码风格 前面我们已 ...

  9. c++11特性与cocos2d-x 3.0之std::bind与std::function

    昨天同事让帮忙写一小功能,才发现cocos2d-x 3.0 和 cocos2d-x 3.0rc0 差别还是相当大的. 发现Label这一个控件,3.0就比rc0版本多了一个创建函数,更为关键的是3.0 ...

随机推荐

  1. Vxlan L2

    VXLAN(Virtual eXtensible LAN可扩展虚拟局域网)诞生了,基于IP网络之上,采用的是MAC in UDP技术 跨三层实现二层通信 总结为何需要Vxlan: 虚拟机规模受到网络规 ...

  2. 题目分享D 二代目

    题意:给定一个T条边的无向图,求S到E恰好经过N条边的最短路径 T≤100 N≤1000000 分析:(据说好像假期学长讲过) 首先很容易想到的是dp[i][j][k]表示从i到j经过k条边的最短路径 ...

  3. JavaScript键值对集合怎么使用

    JavaScript键值对集合怎么使用 我们可以对此键值对集合分为3种难度 1.简单的使用 var arr = { 'cn': "中国", 'usa': '美国', 'jp': ' ...

  4. 一篇博客带你轻松应对java面试中的多线程与高并发

    1. Java线程的创建方式 (1)继承thread类 thread类本质是实现了runnable接口的一个实例,代表线程的一个实例.启动线程的方式start方法.start是一个本地方法,执行后,执 ...

  5. Polar码快速入门

    Polar码快速入门 本科生在学习极化码时,并不是件简单的事情.网上极化码的资料很少,而且基本上都是较难的论文.这篇文章是用来帮你快速入门极化码. Poalr码背景 2015 年,国际电信联盟无线通信 ...

  6. JUC之ReentrantLock源码分析

    ReentrantLock:实现了Lock接口,是一个可重入锁,并且支持线程公平竞争和非公平竞争两种模式,默认情况下是非公平模式.ReentrantLock算是synchronized的补充和替代方案 ...

  7. quartus II Warning 好的时序是设计出来的,不是约束出来的

    一.Warning (15714): Some pins have incomplete I/O assignments. Refer to the I/O Assignment Warnings r ...

  8. Android广播时间——实现强制下线功能

    目录 思路:强制下线功能需要先关闭掉所有的活动,然后回到登录界面. 步骤 1.关闭所有活动 2.创建BaseActivity类作为所有活动的父类,因为需要用ActivityCollector管理所有活 ...

  9. [hdu5256]LIS模型

    题目:有一个数列A1,A2...An,修改数量最少的元素,使得这个数列严格递增.无论是修改前还是修改后,每个元素都必须是整数. 思路: 修改数量最少的元素使得这个数列严格递增,等价于让数量最多的元素不 ...

  10. Vue中跨域问题解决方案1

    我们需要配置代理.代理可以解决的原因:因为客户端请求服务端的数据是存在跨域问题的,而服务器和服务器之间可以相互请求数据,是没有跨域的概念(如果服务器没有设置禁止跨域的权限问题),也就是说,我们可以配置 ...