缓存(cache)机制的原理是什么?
把新加进内存的资源做一个hashmap存储,每一个资源加一个key。每次加载资源,先从缓存中寻找,如果找到就直接返回,否则加载到内存后再返回。
一、自动缓存纹理
直接使用display.newSprite(fileName)创建精灵,引擎内部会自动把纹理加载到缓存中
二、手动缓存纹理
(1)首先,需要获取引擎的纹理缓存实例
local textureCache = cc.Director:getInstance():getTextureCache()
(2)然后调用实例的addImage方法
local texture = textureCache:addImage(fileName)
注意:
addImage是同步加载,如果图片很多,可能需要异步加载纹理(addImageAsync)
三、获取纹理
local texture = textureCache:getTextureForKey(fileName)
如果获取不到纹理的话,getTextureForKey会返回nil;
四、清理缓存(removeUnusedTextures、removeTextureForKey、removeAllTextures)
cc.Director:getInstance();getTextureCache():removeUnusedTextures()
removeUnusedTextures会释放当前所有引用计数为1的纹理(比如场景切换后,此方法可是释放前一场景加载的纹理资源);