如何异步加载图片资源

CCTextureCache::sharedTextureCache()->addImageAsync(“img/bg.png”,
this, callfuncO_selector(HelloWorld::loadingCallBack));
使用这个方法来将图片加载到缓存,而且还能实现loading界面的百分比,进度条的效果,但是现在有一个资源文件是在ccb中使用的,简单地说,就是程序调用ccbi文件,ccbi文件是用ccb导出来的文件,有时候ccbi调用的图片资源较大,创建一个新的对象的时候有卡顿现象,所以想要预加载图片,然后ccbi文件想要调用图片的时候,直接从内存里取缓存好的纹理就可以。但是怎么控制ccbi文件去缓存里取图片呢?

来个说话的人行吗

这个得看下 CCBReader 是怎么读取图片的吧

先用addImageAsync加载一遍
应该在内存里有Cache了吧
再加载ccbi应该是读的缓存
具体还是要看代码
或者你直接测试下有没效果

结果发出来共享下呢

在ios上不会卡死吗,autoreleasepool

根据我们以前做捕鱼达人的经验。在刚刚进入场景的时候就先吧资源都加载进来比较好。
— Begin quote from ____

引用楼主i-feel于2013-12-30 17:10发表的 如何异步加载图片资源 :
CCTextureCache::sharedTextureCache()->addImageAsync(“img/bg.png”,
this, callfuncO_selector(HelloWorld::loadingCallBack));
使用这个方法来将图片加载到缓存,而且还能实现loading界面的百分比,进度条的效果,但是现在有一个资源文件是在ccb中使用的,简单地说,就是程序调用ccbi文件,ccbi文件是用ccb导出来的文件,有时候ccbi调用的图片资源较大,创建一个新的对象的时候有卡顿现象,所以想要预加载图片,然后ccbi文件想要调用图片的时候,直接从内存里取缓存好的纹理就可以。但是怎么控制ccbi文件去缓存里取图片呢?
http://www.cocoachina.com/bbs/job.php?action=topost&tid=177202&pid=tpc

— End quote

如果是addImageAsync不支持的贴图格式,你们是怎么实现回调更新Loading条呢?

在同一个线程里面加载一个resource,马上播放一帧动画。再加载下一个resource。如此反复就好像是两个进程在异步执行一样
— Begin quote from ____

引用第6楼jingyang于2014-01-03 12:05发表的 回 5楼(yuye-chukong) 的帖子 :
如果是addImageAsync不支持的贴图格式,你们是怎么实现回调更新Loading条呢? http://www.cocoachina.com/bbs/job.php?action=topost&tid=177202&pid=868069

— End quote

我们的资源都是用TexturePacker打包的,png和jpg格式的图片资源是可以用这个方法来搞,但是别的呢比如,pvr.ccz,这种格式的图片要怎么搞。看到有一个方法是addPVRImg(),但不是多线程啊,还有别的方法吗?

CCBReader解析ccbi的这个过程着实不好找啊,我找了很多天没找到是怎么回事

你有没有试过添加一个textture的时间是多少,之前做捕鱼我们也是用texture,先添加一张到缓存里面,一张pvr.ccz很快就会加载完毕的。然后调用的时候回去直接调用缓存
添加到缓存的方法可以参考这个教程
http://www.ityran.com/archives/3753

— Begin quote from ____

引用第8楼i-feel于2014-01-03 17:57发表的 回 5楼(yuye-chukong) 的帖子 :
我们的资源都是用TexturePacker打包的,png和jpg格式的图片资源是可以用这个方法来搞,但是别的呢比如,pvr.ccz,这种格式的图片要怎么搞。看到有一个方法是addPVRImg(),但不是多线程啊,还有别的方法吗? http://www.cocoachina.com/bbs/job.php?action=topost&tid=177202&pid=868451

— End quote