CocosCreator開發筆記(21)-cc.Sprite的動態載入和釋放
阿新 • • 發佈:2018-11-20
cc.Sprite是Creator中比較常用的一個元件,實際使用中常常需要做動態/非同步載入。要讓它顯示圖片,實際上主要是設定SpriteFrame。
let path = 'resources/test.png'; let sp = node.getComponent(cc.Sprite); if (!sp) { sp = node.addComponent(cc.Sprite); } cc.loader.loadRes(path, cc.SpriteFrame, (err, frame) => { if (err) { cc.log('error to loadRes: ' +path + ', ' +err||err.message); return; } sp.sprteFrame = frame; });
像這樣,test.png圖片就會顯示在node節點上。顯示完成後如果要立即釋放,以空出記憶體,則可以這樣:
// 釋放SpriteFrame和關聯Texture
let deps = cc.loader.getDependsRecursively(frame);
if (deps) {
cc.loader.release(deps);
}
有時候一張一張釋放太麻煩,也可以在切換場景時一次性釋放。Creator引擎中規定動態載入的資源,在場景切換時不會自動釋放,但我們可以在Load完成後設定它為自動釋放。如下:
cc.loader.loadRes(path, cc.SpriteFrame, (err, frame) => { if (err) { cc.log('error to loadRes: ' +path + ', ' +err||err.message); return; } // 自動釋放SpriteFrame和關聯Texture資源 cc.loader.setAutoReleaseRecursively(frame, true); sp.sprteFrame = frame; });
按上面程式碼這樣設定過的SpriteFrame,將會在場景切換時自動進行釋放。