CCSpriteBatchNode和贴图集的使用总结

(转载注明出处,谢谢:http://www.cnblogs.com/binxindoudou/archive/2013/03/25/2980704.html:)

这个在网上有好多解释,但大多过于繁琐,简单说来,CCSpriteBatchNode可以减少渲染次数,而贴图集就是放在一张大图里,可以节省内存空间

下面三个例子是一个游戏关卡的按钮例子,将各个关卡的图片放入一张levels.png中,然后依靠名字进行读取即可。 

1.CCSpriteBatchNode的单独使用

 1 //经典子弹生100个
 2 CCSpriteBatchNode *batchNode = [CCSpriteBatchNode batchNodeWithFile:@"bullet.png"];
 3 //先添加批处理容器
 4 [self addChild:batchNode];
 5 //将每个精灵添加到批处理容器中
 6 for(int i = 0 ; i < 100; i++)
 7 {
 8      CCSprite *sprite = [CCSprite     spriteWithSpriteFrameName:@"bullet.png"];
 9      [batchNode addChild:sprite];
10 }    

2.贴图集单独的使用

1 [[CCSpriteFrameCachesharedSpriteFrameCache] addSpriteFramesWithFile:@"levels.plist"];
2 CCSprite *sprite = [CCSpritespriteWithSpriteFrameName:@"level1.png"];

3.CCSpriteBatchNode和贴图集的结合使用

 1 //帧缓冲区将levels.plist读取,可以将对应该名称的levels.png图片的内部子图片的名称位置大小的信息放入内存中,以便以后取用
 2 [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"levels.plist"]; 
 3 //将这个大图放入内存中,只需渲染一次就可多次使用,提高运行效率;配合levels.plist依据图片的名称进行识别,进而裁剪出需要的那块元素
 4 CCSpriteBatchNode *batchNodeOfLevels = [CCSpriteBatchNode batchNodeWithFile:@"levels.png"]; 
 5 //将这个batchNode填入场景中,这个batchNode就一次添加到内存中
 6 [self addChild:batchNodeOfLevels]; 
 7 //直接使用贴图集中一个图片的名称就可以了
 8 CCSprite *spriteOfLevelOne = [CCSprite spriteWithSpriteFrameName:@"level1.png"]; 
 9 //记住一定要将该精灵放入batchNode中,相当于一个容器,放入其中,当下次访问时,直接从该容器中进行访问,减少渲染次数
10 [batchNodeOfLevels addChild:spriteOfLevelOne]; 

以上只是我自己的学习笔记,有什么问题欢迎一起来探讨。

(转载注明出处,谢谢:http://www.cnblogs.com/binxindoudou/archive/2013/03/25/2980704.html:)

转载于:https://www.cnblogs.com/binxindoudou/archive/2013/03/25/2980704.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值