cocos2dx 纹理缓存

缓存(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的纹理(比如场景切换后,此方法可是释放前一场景加载的纹理资源);


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值