zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    Sql Server2005新特性及性能
    Sql Server Debugger
    .关于 WCF Binding 中 OpenTimeout, CloseTimeout, SendTimeout, ReceiveTimeout 的解释(转载)
    LightSwitch™初体验
    WinDbg / SOS Cheat Sheet
    《Dissecting SQL Server Execution Plans》随记
    轻松掌握用SQL来合并查询
    Oracle:存储过程的使用
    Eclipse和Tomcat的版本问题已解决
    oracle:触发器的使用
  • 原文地址:https://www.cnblogs.com/ttss/p/4076042.html
Copyright © 2011-2022 走看看