Cocos Creator学习过程中的知识整理
自学研究Cocos Creator中整理记录的一些比较重要的知识点,作一些记录方便自己查询,会不定期更新。
一、Cocos Creator相关
1.屏幕分辨率和异形屏适配
适配各种分辨率和屏幕比例:
这个Cocos Creator已经做的很完善了,使用起来也比较简单。
Cocos官网文档教程说明,也是Cocos Creator适配屏幕的基础知识:
http://docs.cocos.com/creator/manual/zh/ui/multi-resolution.html
http://docs.cocos.com/creator/manual/zh/ui/widget-align.html
主要是使用Canvas作为根节点,然后使用widget组件防止可交互内容跑出屏幕外。
适配异形屏:
参考知乎一个关于unity适配iPhoneX的思路https://www.zhihu.com/question/68199219/answer/262488809
自己目前的想法是,canvas的Fit Height和Fit Width都不勾选(为了不产生黑边,代价是会有裁剪,但是裁剪总比黑边好),在canvas下创建两个节点,一个是游戏背景background,使用widget组件使其铺满canvas(widget的top、left、bottom、right均设置为0px),background会随分辨率比例变化会有裁剪,但会始终保持没有黑边全屏覆盖;还有一个是safe_area,这个safe_area安全区作为所有可交互节点的根节点,safe_area的子节点要使用widget保证自己不会超出safe_area。只要保证safe_area的位置和尺寸正确,不被刘海遮住,那么所有的可交互节点便也不会被刘海遮住了。所有只需控制好safe_area的widget组件的top、left、bottom、right就好了。具体要在代码中读取当前手机设备的信息,并设置好safe_area的widget的值。
二、JavaScript相关
1.JavaScript的单线程解疑
作为一名使用Java的Android开发者,用js写网络请求时,怎么也找不到怎么开多线程异步处理。后来才了解到js使用的是单线程,这篇文章讲解得很好https://blog.csdn.net/w2765006513/article/details/53743051
js中异步操作setTimeout https://zhuanlan.zhihu.com/p/26962590
简单总结来说,js是单线程模型,js代码都是在一个线程中执行的,无法手动开启新线程执行操作,但js调用http网络请求、读取文件等常用耗时操作的api,执行时会自动在别的工作线程中执行,此外还会提供一些事件的回调,例如http请求完成、超时等事件,回调回js执行的主线程中去。你只需关注一些事件的回调,在回调方法中执行你自己的逻辑。但是对于代码中需要进行的一些复杂耗时的算法计算,可能需要通过jsb调用C++开启新线程执行了。