iPhone游戏开发 Cocos2d加载图片方式实例操作

移动开发 iOS 游戏开发
本文介绍的是iPhone游戏开发 Cocos2d加载图片方式实例操作,主要实现图片加载的动作,先来看内容。

iPhone游戏开发 Cocos2d加载图片方式实例操作是本文要介绍的内容,分享一个我用cocos2d加载图片的方式,其实很简单,我觉得还挺实用的,来看详细内容。

首先要提醒一点,ihpone开发中所有的图片最好都是png格式的,虽然png格式的图片比jpg或其他的图片要大,但是png的图片在sdk中是做过优化处理的,是苹果推荐的格式,对这个格式支持也是相对好的.尤其是在最新4.2的sdk中,如果你有jpg的图片,并且比较大,在真机上是现实不出来的.

最开始做项目,对cocos2d了解的比较少,添加一个CCSprite时,为了简单,就直接用

Java代码 

  1. CCSprite *sprite = [CCSprite spriteWithFile:@"图片名称"];   

CCSprite *sprite = [CCSprite spriteWithFile:@"图片名称"]; 如果你是这样用,那就是说图片要通过自动释放机制来完成对加载图片的释放了,那究竟什么时候图片会自动释放掉呢?当然是程序内存快要用尽的时候

Java代码 

  1. - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {     
  2.     [[CCTextureCache sharedTextureCache] removeUnusedTextures];     
  3. }    
  4.  
  5. - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {  
  6.  [[CCTextureCache sharedTextureCache] removeUnusedTextures];  
  7. }  

看你应用的delegate方法,会有上面一个函数,这个函数就是用来触发什么释放图片的.内存快要到达极限的时候会发出警告告诉上边的方面,然后这个方法就会从cache中释放掉当前不用的图片,

removeUnusedTextures进到这个里面会看到实际上就是释放掉retaincount=1的资源.通过log会发现内存警告是分级别的,

当时1级的时候问题不大,2级的时候就危险了,超过2级程序就完蛋了.而在调用内存警告之前,通过xcode提供内存跟踪工具,会发现图片一直会占着内存.

所以就不要依赖自动释放了,会害了项目的,尤其做游戏,图片比较多,如果用这种方式加载素材,到后期就惨了.我是深有体会.

我是这样做的

Java代码

  1. CCTexture2D * backBGTexture = [[CCTextureCache sharedTextureCache] addImage:@"a_aboutBG.png"];     
  2. CCSprite * backgroundSprite = [[CCSprite alloc] initWithTexture:m_backBGTexture];     
  3. [self addChild:backgroundSprite];        
  4. [backgroundSprite release];    
  5.  
  6. CCTexture2D * backBGTexture = [[CCTextureCache sharedTextureCache] addImage:@"a_aboutBG.png"];  
  7. CCSprite * backgroundSprite = [[CCSprite alloc] initWithTexture:m_backBGTexture];  
  8. [self addChild:backgroundSprite];   
  9. [backgroundSprite release]; 

其实就是手动构建CCsprite这样,在图片不用的时候(一般在dealloc方法中),直接把图片remove掉

Java代码

  1. -(void)dealloc     
  2. {     
  3.     [[CCTextureCache sharedTextureCache] removeTexture:backBGTexture];     
  4.     [super dealloc];     
  5. }   

小结:iPhone游戏开发 Cocos2d加载图片方式实例操作的内容介绍完了,希望本文对你有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-08-11 14:22:47

iPhone游戏Cocos2D

2011-08-04 17:01:16

iPhone游戏开发 Cocos2d

2011-08-11 14:32:04

iPhone游戏Cocos2dActions

2011-07-27 13:57:36

iPhone 游戏 Cocos2d

2011-07-27 10:13:23

Cocos2D iPhone

2011-07-20 14:04:46

Cocos2d iPhone 游戏

2011-08-09 16:08:58

IOS游戏Cocos2d

2012-04-16 13:37:57

cocos2d

2011-07-27 14:48:21

iPhone Cocos2D 坐标

2011-08-08 11:26:39

Cocos2d 游戏 Class类

2012-02-19 20:10:23

Cocos2d-x fCocos2dWindows Pho

2012-06-01 10:27:44

Cocos2d触摸分发原理

2011-12-12 10:40:08

Cocos2d-X游戏开发开发环境

2011-08-22 10:49:42

Cocos2d 开发CCLayerTouch事件

2011-08-11 17:52:01

Cocos2d游戏对象

2011-07-29 18:02:06

2011-08-08 15:40:47

Cocos2d

2011-08-11 18:00:18

Cocos2d动作Action

2011-08-08 17:17:55

Cocos2D 坐标 OpenglES

2011-08-09 16:25:16

Cocos2d视图坐标
点赞
收藏

51CTO技术栈公众号