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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值