cocos2.4.12。
cc.resources.load加载一个图集a.plist,过一会用cc.resources.release释放这个图集,等再次加载这个图集时,显示的成功,正常走了cc.resources.load的回调,但是图集的_spriteFrames为空,不能用。
图1为正常情况,图2为异常情况。
图集有 plist 和 png 2个文件,我只加载了plist文件,发现是能正常用的,所以释放也只释放了cc.SpriteAtlas,不清楚问题出在哪
cocos2.4.12。
cc.resources.load加载一个图集a.plist,过一会用cc.resources.release释放这个图集,等再次加载这个图集时,显示的成功,正常走了cc.resources.load的回调,但是图集的_spriteFrames为空,不能用。
图1为正常情况,图2为异常情况。
图集有 plist 和 png 2个文件,我只加载了plist文件,发现是能正常用的,所以释放也只释放了cc.SpriteAtlas,不清楚问题出在哪
指定释放 cc.SpriteAtlas 类型没有,要指定类型,否则可能释放的是纹理
分享个跟踪释放资源位置的方法, 把下面代码输入到控制台运行即可
let old_tryRelease = cc.assetManager['_releaseManager'].tryRelease
cc.assetManager['_releaseManager'].tryRelease = function (asset, force) {
if(asset instanceof cc.SpriteAtlas){
console.warn('资源被释放 tryRelease', asset.name, force);
}
return old_tryRelease.call(cc.assetManager['_releaseManager'], asset, force);
}
加载和释放都指定了