cocos creator-FAQ

  1. cc.Component

  2. 生命周期回调

  3. cc.path

  4. cc.loader.loadRes

  5. cc.find('target')的使用?

  6. prefab的使用?

  7. addPersistRootNode

  8. cc.game._sceneInfos

  9. 销毁节点

  10. cc.NodePool

  11. cc.random0To1

  12. cc.sys

  13. cc.eventManager.addListener

  14. 如何监听浏览器大小的改变

  15. 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回调。

倘若节点第一次被创建且enabledtrue,则会在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

热更新思路:

  1. 基于原生打包目录中的 res 和 src 目录生成本地 Manifest 文件。

  2. 创建一个热更新组件来负责热更新逻辑。

  3. 游戏发布后,若需要更新版本,则生成一套远程版本资源,包含 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/


你可能感兴趣的:(cocos creator-FAQ)