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加载进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;
}
原文地址:https://www.cnblogs.com/ttss/p/4076042.html