<a id='w1'>cc.Component</a>
cc.Component
是所有组件的基类,任何组件都包括如下的常见接口:
this.node
该组件所属的节点实例this.enabled
是否每帧执行该组件的update
方法,同时也用来控制渲染组件是否显示update(dt)
作为组件的成员方法,在组件的enabled
属性为true
时,其中的代码会每帧执行onLoad( )
组件所在节点进行初始化时(创建之后通过设置父节点添加到节点树)执行start( )
会在该组件第一次update
之前执行, 通常用于需要在onLoad
初始化完毕后执行的逻辑
<a id='w2'>生命周期回调</a>
onLoad
在组件所在的场景被载入的时候触发,保证了你可以获取到场景中的其他节点,以及节点关联的资源数据。初始化阶段。
start
在组件第一次激活前,也就是第一次执行update之前触发。通常用于初始化一些中间状态的数据
update
每一帧渲染前更新物体的行为,状态和方位
lateUpdate
update
会在所有动画更新前执行, 但如果我们要在动画更新之后才进行一些额外操作,或者希望在所有组件的update
都执行完之后才进行其他操作,那需要用到lateUpdate
onEnable
当组件的enabled
属性从false
变为true
时,会激活onEnabled
回调。
倘若节点第一次被创建且enabled
为true
,则会在onLoad
之后,start
之前调用
onDisable
当组件enabled
属性从true
变为false
时,会激活onDisabl
onDestroy
当组件调用了destroy()
,会在该帧结束被统一回收,此时会调用onDestroy
回调
<a id='w3'>cc.path</a>
路径相关
源码:/Applications/CocosCreator.app/Contents/Resources/engine/cocos2d/core/utils/CCPath.js
cc.path.basename('assets/test.png') -> test.png
cc.path.dirname('assets/test.png') -> assets
<a id='w4'>cc.loader.loadRes</a>
加载‘assets/resources'目录下的资源
所有需要通过脚本动态加载的资源,都必须放置在 resources 文件夹或它的子文件夹下。resources 需要在 assets 文件夹中手工创建,并且必须位于 assets 的根目录
<a id='w5'>cc.find('target')的使用?</a>
在Node Tree中查找相应对象,如果找不到则返回null, target大小写敏感
this.contentPos = cc.find('Canvas/testList').getComponent(cc.ScrollView).getContentPosition();
<a id='w6'>prefab的使用?</a>
```js
var item = cc.intantiate(prefab)
this.node.addChild(item)
```
<a id='w7'>cc.game.addPersistRootNode(this.node)</a>
声明常驻根节点,该节点不会被在场景切换中销毁。该节点比较是层级的根节点,否则无效。
<a id='w8'>cc.game._sceneInfos</a>
返回所有assets中Scene的路径,如:"db://assets/Test.fire"
<a id='w9'>销毁节点</a>
通过node.destroy()
函数,可以销毁节点,但并不会立刻发生,而是在当前帧逻辑更新结束后统一执行。当一个节点销毁后,该节点就处于无效状态,可以通过cc.isValid
判断当前节点是否已经被销毁。
<a id='w10'> cc.NodePool
</a>
定义在engine/extensions/ccpool/CCNodePool.js
用于管理节点对象的对象缓存池, 需要实例化之后才能使用,每种不同的节点对象池需要一个不同的对象池实例,这里的种类对应于游戏中的节点设计,一个 prefab 相当于一个种类的节点。
在创建缓冲池时,可以传入一个包含 unuse, reuse 函数的组件类型用于节点的回收和复用逻辑
<a id='w11'>cc.random0To1 && cc.random1To1
</a>
定义在engine/cocos2d/core/platform/CCMacro.js
Math.random的宏
<a id='w12'> cc.sys
</a>
定义在engine/cocos2d/core/platform/CCSys.js
<a id='w13'> cc.eventManager.addListener
</a>
定义在engine/cocos2d/core/event-manager/CCEventManager.js
负责管理自定义事件和输入事件,如:鼠标、触摸、键盘、陀螺仪。
示例在engine/docs/cocos2d/core/event-manager/CCEventManager/addListener.js
指引在http://www.cocos.com/docs/creator/scripting/player-controls.html
<a id="w14">如何监听浏览器大小的改变</a>
cc.view.setResizeCallback(()=>{
var rect = cc.game.canvas.getBoundingClientRect();
//rect.left, rect.top, rect.width, rect.height ...
});
<a id='w15'>hot-update</a>
hot update
热更新思路:
基于原生打包目录中的 res 和 src 目录生成本地 Manifest 文件。
创建一个热更新组件来负责热更新逻辑。
游戏发布后,若需要更新版本,则生成一套远程版本资源,包含 res 目录、src 目录和Manifest 文件,将远程版本部署到服务端
4.当热更新组件检测到服务端 Manifest 版本不一致时,就会开始热更新
每次build
之后都要添加
// 在 main.js 的开头添加如下代码
if (cc.sys.isNative) {
var hotUpdateSearchPaths = cc.sys.localStorage.getItem('HotUpdateSearchPaths');
if (hotUpdateSearchPaths) {
jsb.fileUtils.setSearchPaths(JSON.parse(hotUpdateSearchPaths));
}
}
生成manifest文件
$node version_generator.js -v 1.1.6 -u http://192.168.10.8:8080/client/test/hot-update/ -s build/jsb-default/ -d assets/