首页 > 代码库 > cocos中BatchNode精灵集合的使用

cocos中BatchNode精灵集合的使用

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加载进CCLayerbool 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加载进CCLayerbool 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;}

 

cocos中BatchNode精灵集合的使用