Cocos2d加载图片的方式
来源:互联网 发布:oracle数据库高可用性 编辑:程序博客网 时间:2024/05/16 02:10
分享一个我用cocos2d加载图片的方式,其实很简单,我觉得还挺实用的
首先要提醒一点,ihpone开发中所有的图片最好都是png格式的,虽然png格式的图片比jpg或其他的图片要大,但是png的图片在sdk中是做过优化处理的,是苹果推荐的格式,对这个格式支持也是相对好的.尤其是在最新4.2的sdk中,如果你有jpg的图片,并且比较大,在真机上是现实不出来的.
最开始做项目,对cocos2d了解的比较少,添加一个CCSprite时,为了简单,就直接用
- CCSprite *sprite = [CCSprite spriteWithFile:@"图片名称"];
如果你是这样用,那就是说图片要通过自动释放机制来完成对加载图片的释放了,那究竟什么时候图片会自动释放掉呢?当然是程序内存快要用尽的时候
- - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
- [[CCTextureCache sharedTextureCache] removeUnusedTextures];
- }
看你应用的delegate方法,会有上面一个函数,这个函数就是用来触发什么释放图片的.内存快要到达极限的时候会发出警告告诉上边的方面,然后这个方法就会从cache中释放掉当前不用的图片,
removeUnusedTextures进到这个里面会看到实际上就是释放掉retaincount=1的资源.通过log会发现内存警告是分级别的,
当时1级的时候问题不大,2级的时候就危险了,超过2级程序就完蛋了.而在调用内存警告之前,通过xcode提供内存跟踪工具,会发现图片一直会占着内存.
所以就不要依赖自动释放了,会害了项目的,尤其做游戏,图片比较多,如果用这种方式加载素材,到后期就惨了.我是深有体会.
我是这样做的
- CCTexture2D * backBGTexture = [[CCTextureCache sharedTextureCache] addImage:@"a_aboutBG.png"];
- CCSprite * backgroundSprite = [[CCSprite alloc] initWithTexture:m_backBGTexture];
- [self addChild:backgroundSprite];
- [backgroundSprite release];
其实就是手动构建CCsprite这样,在图片不用的时候(一般在dealloc方法中),直接把图片remove掉
- -(void)dealloc
- {
- [[CCTextureCache sharedTextureCache] removeTexture:backBGTexture];
- [super dealloc];
- }
再通过内存跟踪工具会发现,内存当即被释放掉了.这样场景间切换的时候,就可以把上一个场景的图片全部释放掉.
我就是这样做的.呵呵.
- Cocos2d加载图片的方式
- Cocos2d加载图片的方式
- 图片加载的基本方式
- 图片的加载处理方式
- Cocos2D资源加载方式
- Flex加载图片的几种方式
- android 加载图片的三种方式
- 两种图片加载方式的区别
- IOS 加载网络图片的方式对比
- UIImage加载图片的几种方式
- Volley加载图片的三种方式
- ImageView加载图片的几种方式
- 加载图片的三种方式使用
- 探究图片加载的实现方式
- ios 图片加载的两种方式
- 压缩图片加载的简单方式
- iOS选择图片加载的方式
- UIWebView 加载图片的一种方式
- 拓扑排序专题
- 一. Redhat 安装FTP
- VBA 重置所有单元格选中位置到A1
- C#高级程序设计(八)——Lambda表达式
- 【lizhi125】SEO工具,站长必备,关键词工具,google相关工具
- Cocos2d加载图片的方式
- 编程之美--读书笔记集锦
- libmad库的移植
- [转载] 在程序中使用DataTable对象
- 常用工具网址
- 整数因子分解的Pollard-rho方法
- python类的语法
- 填报报表
- 断点续传下载时http请求