Cocos 特有功能代碼

1、存儲和讀取用戶數據:cc.sys.localStorage

cc.sys.localStorage 接口是按照 Web Storage API 來實現的,在 Web 平臺運行時會直接調用 Web Storage API,在原生平臺上會調用 sqlite 的方法來存儲數據。用戶不用關心內部實現。

// 存儲數據
cc.sys.localStorage.setItem(key, value)
// 讀取數據
cc.sys.localStorage.getItem(key)
// 移除鍵值對
cc.sys.localStorage.removeItem(key)
2、自定義事件監聽器
// 註冊指定事件名的自定義事件監聽器
cc.director.on('key', this.function, node);
// 刪除指定事件名的自定義事件監聽器
cc.director.off('key', this.function, node);
// 通過指定事件名發送自定義事件
cc.director.emit('key', data);
3、通過常駐節點進行場景資源管理和參數傳遞

引擎同時只會運行一個場景,當切換場景時,默認會將場景內所有節點和其他實例銷燬。如果需要用一個組件控制所有場景的加載,或在場景之間傳遞參數數據,就需要將該組件所在節點標記爲「常駐節點」,使它在場景切換時不被自動銷燬,常駐內存。使用以下接口:

cc.game.addPersistRootNode(myNode);

上面的接口會將 myNode 變爲常駐節點,這樣掛在上面的組件都可以在場景之間持續作用,可以用這樣的方法來儲存玩家信息,或下一個場景初始化時需要的各種數據。
如果要取消一個節點的常駐屬性:

cc.game.removePersistRootNode(myNode);

需要注意的是上面的 API 並不會立即銷燬指定節點,只是將節點還原爲可在場景切換時銷燬的節點。
檢查節點是否是常駐根節點:

cc.game.isPersistRootNode(myNode);
4、資源的釋放【資源的依賴和釋放
// 直接釋放某個貼圖
cc.loader.release(texture);
// 釋放一個 prefab 以及所有它依賴的資源
var deps = cc.loader.getDependsRecursively('prefabs/sample');
cc.loader.release(deps);
// 如果在這個 prefab 中有一些和場景其他部分共享的資源,你不希望它們被釋放,可以將這個資源從依賴列表中刪除
var deps = cc.loader.getDependsRecursively('prefabs/sample');
var index = deps.indexOf(texture2d._uuid);
if (index !== -1) deps.splice(index, 1);
cc.loader.release(deps);
5、檢查該對象是否不爲 null 並且尚未銷燬:cc.isValid(object)

檢查該對象是否不爲 null 並且尚未銷燬。當一個對象的 destroy 調用以後,會在這一幀結束後才真正銷燬。因此從下一幀開始 isValid 就會返回 false,而當前幀內 isValid 仍然會是 true。如果希望判斷當前幀是否調用過 destroy,請使用 cc.isValid(obj, true),不過這往往是特殊的業務需求引起的,通常情況下不需要這樣。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章