cc.Component
生命周期回调
cc.path
cc.loader.loadRes
cc.find('target')的使用?
prefab的使用?
addPersistRootNode
cc.game._sceneInfos
销毁节点
cc.NodePool
cc.random0To1
cc.sys
cc.eventManager.addListener
如何监听浏览器大小的改变
hot-update
cc.Component
cc.Component
是所有组件的基类,任何组件都包括如下的常见接口:
this.node
该组件所属的节点实例this.enabled
是否每帧执行该组件的update
方法,同时也用来控制渲染组件是否显示update(dt)
作为组件的成员方法,在组件的enabled
属性为true
时,其中的代码会每帧执行onLoad( )
组件所在节点进行初始化时(创建之后通过设置父节点添加到节点树)执行start( )
会在该组件第一次update
之前执行, 通常用于需要在onLoad
初始化完毕后执行的逻辑
生命周期回调
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
回调
cc.path
路径相关
源码:/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
cc.loader.loadRes
加载‘assets/resources'目录下的资源
所有需要通过脚本动态加载的资源,都必须放置在 resources 文件夹或它的子文件夹下。resources 需要在 assets 文件夹中手工创建,并且必须位于 assets 的根目录
cc.find('target')的使用?
在Node Tree中查找相应对象,如果找不到则返回null, target大小写敏感
this.contentPos = cc.find('Canvas/testList').getComponent(cc.ScrollView).getContentPosition();
prefab的使用?
```js
var item = cc.intantiate(prefab)
this.node.addChild(item)
```
cc.game.addPersistRootNode(this.node)
声明常驻根节点,该节点不会被在场景切换中销毁。该节点比较是层级的根节点,否则无效。
cc.game._sceneInfos
返回所有assets中Scene的路径,如:"db://assets/Test.fire"
销毁节点
通过node.destroy()
函数,可以销毁节点,但并不会立刻发生,而是在当前帧逻辑更新结束后统一执行。当一个节点销毁后,该节点就处于无效状态,可以通过cc.isValid
判断当前节点是否已经被销毁。
cc.NodePool
定义在engine/extensions/ccpool/CCNodePool.js
用于管理节点对象的对象缓存池, 需要实例化之后才能使用,每种不同的节点对象池需要一个不同的对象池实例,这里的种类对应于游戏中的节点设计,一个 prefab 相当于一个种类的节点。
在创建缓冲池时,可以传入一个包含 unuse, reuse 函数的组件类型用于节点的回收和复用逻辑
cc.random0To1 && cc.random1To1
定义在engine/cocos2d/core/platform/CCMacro.js
Math.random的宏
cc.sys
定义在engine/cocos2d/core/platform/CCSys.js
cc.eventManager.addListener
定义在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
如何监听浏览器大小的改变
cc.view.setResizeCallback(()=>{
var rect = cc.game.canvas.getBoundingClientRect();
//rect.left, rect.top, rect.width, rect.height ...
});
hot-update
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/