<a id='w1'>cc.Component</a>
cc.Component
是所有組件的基類,任何組件都包括如下的常見接口:
this.node
該組件所屬的節(jié)點實例this.enabled
是否每幀執(zhí)行該組件的update
方法基显,同時也用來控制渲染組件是否顯示update(dt)
作為組件的成員方法萧朝,在組件的enabled
屬性為true
時连霉,其中的代碼會每幀執(zhí)行onLoad( )
組件所在節(jié)點進行初始化時(創(chuàng)建之后通過設置父節(jié)點添加到節(jié)點樹)執(zhí)行start( )
會在該組件第一次update
之前執(zhí)行偷崩, 通常用于需要在onLoad
初始化完畢后執(zhí)行的邏輯
<a id='w2'>生命周期回調</a>
onLoad
在組件所在的場景被載入的時候觸發(fā)箫柳,保證了你可以獲取到場景中的其他節(jié)點袖牙,以及節(jié)點關聯(lián)的資源數(shù)據(jù)朽缎。初始化階段。
start
在組件第一次激活前翰守,也就是第一次執(zhí)行update之前觸發(fā)孵奶。通常用于初始化一些中間狀態(tài)的數(shù)據(jù)
update
每一幀渲染前更新物體的行為,狀態(tài)和方位
lateUpdate
update
會在所有動畫更新前執(zhí)行蜡峰, 但如果我們要在動畫更新之后才進行一些額外操作了袁,或者希望在所有組件的update
都執(zhí)行完之后才進行其他操作,那需要用到lateUpdate
onEnable
當組件的enabled
屬性從false
變?yōu)?code>true時湿颅,會激活onEnabled
回調载绿。
倘若節(jié)點第一次被創(chuàng)建且enabled
為true
,則會在onLoad
之后肖爵,start
之前調用
onDisable
當組件enabled
屬性從true
變?yōu)?code>false時怜珍,會激活onDisabl
onDestroy
當組件調用了destroy()
胁黑,會在該幀結束被統(tǒng)一回收蚯斯,此時會調用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>
加載‘a(chǎn)ssets/resources'目錄下的資源
所有需要通過腳本動態(tài)加載的資源帚称,都必須放置在 resources 文件夾或它的子文件夾下鸥印。resources 需要在 assets 文件夾中手工創(chuàng)建妄呕,并且必須位于 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>
聲明常駐根節(jié)點鸥鹉,該節(jié)點不會被在場景切換中銷毀搀玖。該節(jié)點比較是層級的根節(jié)點余境,否則無效。
<a id='w8'>cc.game._sceneInfos</a>
返回所有assets中Scene的路徑,如:"db://assets/Test.fire"
<a id='w9'>銷毀節(jié)點</a>
通過node.destroy()
函數(shù)芳来,可以銷毀節(jié)點含末,但并不會立刻發(fā)生,而是在當前幀邏輯更新結束后統(tǒng)一執(zhí)行即舌。當一個節(jié)點銷毀后佣盒,該節(jié)點就處于無效狀態(tài),可以通過cc.isValid
判斷當前節(jié)點是否已經(jīng)被銷毀顽聂。
<a id='w10'> cc.NodePool
</a>
定義在engine/extensions/ccpool/CCNodePool.js
用于管理節(jié)點對象的對象緩存池, 需要實例化之后才能使用肥惭,每種不同的節(jié)點對象池需要一個不同的對象池實例,這里的種類對應于游戲中的節(jié)點設計紊搪,一個 prefab 相當于一個種類的節(jié)點蜜葱。
在創(chuàng)建緩沖池時,可以傳入一個包含 unuse, reuse 函數(shù)的組件類型用于節(jié)點的回收和復用邏輯
<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">如何監(jiān)聽瀏覽器大小的改變</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 文件。
創(chuàng)建一個熱更新組件來負責熱更新邏輯诗良。
游戲發(fā)布后汹桦,若需要更新版本,則生成一套遠程版本資源鉴裹,包含 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/