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



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

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

热更新思路:

  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/


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,591评论 18 139
  • 前言 我选择开发一个游戏有很多原因。我觉得自己是“核心”玩家,过去的大部分时间我都花在玩游戏,自己制作、阅读和游戏...
    月影檀香阅读 11,808评论 1 27
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,413评论 25 707
  • 01 在北京东城区某个地铁站附近,一位环卫大叔正在扫地,这时有两个瑞典人向他问路,结果这位满脸皱纹、皮肤黝黑、个头...
    可闻桃杏香阅读 291评论 0 1
  • 我要严肃地吐槽一下我的写作风格…… 小时候写作文还算是写的比较不错的,然而很久没有写过什么东西了,现在写出来的,总...
    红音羽阅读 177评论 0 0