标签:style blog io color ar os 使用 for sp
1.CCSpriteBatchNode是为了提高渲染效率而实现的,它继承自CCNode
2.fps:帧率,是游戏中衡量流畅度的一个很重要的概念,cocos中默认的帧率是60,即一秒刷新60帧
3.精灵集合的原理:
提前将要渲染的图片用batchnode加载到内存,需要使用时,直接从内存提取,省去了加载的过程,因而效率高
如果要加载1000 个精灵,加载,渲染重复执行1000 次。使用CCSpriteBatchNode 批量渲染,一次渲染就把所有的CCSprite 绘制出来。大大降低渲染批次。
4.使用步骤:
a.先将要多次渲染的精灵图片加载进batchnode(相当于使用batchnode进行预加载)
b.将batchnode加载进需要使用的CCLayer中
c.需要使用某个精灵(前提是已经在batchnode中加载过了),直接使用
5.代码实现:
加载一张图片:
/*创建一个CCBatchNode对象,提前渲染你要使用的图片资源*/ batchNode = CCSpriteBatchNode::create("batchnode/CloseNormal.png"); addChild(batchNode);//将BatchNode加载进CCLayer bool T06SpriteBatchNode::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent) { for (int i = 0; i < 1000; i++) { CCSprite * spr = CCSprite::create("CloseNormal.png");//正常,该图片已经在batchnode中提前渲染了 spr->setPosition(ccp(CCRANDOM_0_1()*480,CCRANDOM_0_1()*320)); batchNode->addChild(spr);//直接添加进batchNode渲染即可 } return false; }
加载多张图片:
/*使用BatchNode来加载多张图片,此时需要使用plist*/ CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("batchnode/plant.plist"); batchNode = CCSpriteBatchNode::create("batchnode/plant.png"); addChild(batchNode);//将BatchNode加载进CCLayer bool T06SpriteBatchNode::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent) { static bool flag = true; CCSprite * spr; for (int i = 0; i < 1000; i++) { if (flag) { spr = CCSprite::createWithSpriteFrameName("CloseNormal.png");//这些图片必须是在batchNode中已经提前熏染过的 } else{ spr = CCSprite::createWithSpriteFrameName("Icon.png"); } flag = !flag; spr->setPosition(ccp(CCRANDOM_0_1()*480,CCRANDOM_0_1()*320)); batchNode->addChild(spr););//直接添加进batchNode渲染即可 } return false; }
标签:style blog io color ar os 使用 for sp
原文地址:http://www.cnblogs.com/ttss/p/4076042.html