1. 程式人生 > >CocosCreator開發筆記(21)-cc.Sprite的動態載入和釋放

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