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