跳至正文

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,将会在场景切换时自动进行释放。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注