天天看點

CocosCreator開發筆記(21)-cc.Sprite的動态加載和釋放

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,将會在場景切換時自動進行釋放。