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 = ; i < ; i++)
{
CCSprite * spr = CCSprite::create("CloseNormal.png");//正常,该图片已经在batchnode中提前渲染了
spr->setPosition(ccp(CCRANDOM_0_1()*,CCRANDOM_0_1()*));
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 = ; i < ; i++)
{
if (flag)
{
spr =
CCSprite::createWithSpriteFrameName("CloseNormal.png");//这些图片必须是在batchNode中已经提前熏染过的
}
else{
spr = CCSprite::createWithSpriteFrameName("Icon.png");
}
flag = !flag;
spr->setPosition(ccp(CCRANDOM_0_1()*,CCRANDOM_0_1()*));
batchNode->addChild(spr););//直接添加进batchNode渲染即可
}
return false;
}

cocos中BatchNode精灵集合的使用的更多相关文章

  1. 2DToolkit官方文档中文版打地鼠教程(三):Sprite Collections 精灵集合

    这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...

  2. cocos2d-x中描述精灵帧图片的plist和json文件各个key的含义

    最近在研究cocos,互联网行业中,手游业最近的表现是非常的火,加上本身对游戏有浓厚兴趣,所以便染指了游戏引擎~ 这次的废话就这么简短吧,因为这次记录的东西本身就很少. 在cocos中,为精灵帧添加缓 ...

  3. 深入理解javascript中的动态集合——NodeList、HTMLCollection和NamedNodeMap

    × 目录 [1]NodeList [2]HTMLCollection [3]NamedNodeMap[4]注意事项 前面的话 一说起动态集合,多数人可能都有所了解.但是,如果再深入些,有哪些动态集合, ...

  4. Java中如何克隆集合——ArrayList和HashSet深拷贝

    编程人员经常误用各个集合类提供的拷贝构造函数作为克隆List,Set,ArrayList,HashSet或者其他集合实现的方法.需要记住的是,Java集合的拷贝构造函数只提供浅拷贝而不是深拷贝,这意味 ...

  5. JAVA并发七(多线程环境中安全使用集合API)

    在集合API中,最初设计的Vector和Hashtable是多线程安全的.例如:对于Vector来说,用来添加和删除元素的方法是同步的.如果只有一个线程与Vector的实例交互,那么,要求获取和释放对 ...

  6. cocos2dx中的精灵CCSprite

    什么是精灵(CCSprite),在官网文档中是这么定义的 Sprites A cocos2d CCSprite is similar to sprites you find in other game ...

  7. Python中字典和集合

    Python中字典和集合 映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元 ...

  8. 【.net 深呼吸】在配置节中使用元素集合

    前一篇博文中,老周介绍了自定义配置节的方法,本文咱们再往深一层,再看看如何在自定义的配置节中使用配置元素集合. 前面咱们说过,Configuration Section是特殊的配置元素,它可以包装一类 ...

  9. 转:【Java并发编程】之八:多线程环境中安全使用集合API(含代码)

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/17200509     在集合API中,最初设计的Vector和Hashtable是多线程安 ...

随机推荐

  1. AspNetPager学习使用1

    今天开始研究使用AspNetPager 首先贴上下载链接:http://www.webdiyer.com/aspnetpager/downloads/ 在下载链接中,作者已经提供了使用方法.在这里,本 ...

  2. 【转载】Deep Learning(深度学习)学习笔记整理

    http://blog.csdn.net/zouxy09/article/details/8775360 一.概述 Artificial Intelligence,也就是人工智能,就像长生不老和星际漫 ...

  3. android ListView下拉刷新 上拉加载更多

    背景 最近在公司的项目中要使用到ListView的下拉刷新和上拉加载更多(貌似现在是个项目就有这个功能!哈哈),其实这个东西GitHub上很多,但是我感觉那些框架太大,而且我这个项目只用到了ListV ...

  4. ORACLE的分组统计之CUBE(二)

    cube统计包含了rollup的统计结果,而且还有其他组合分组结果(小计),CUBE(n列),那么分组种类有: cube分组就是先进行合计(一个不取),然后小计(到),最后取标准分组. 与rollup ...

  5. jsp中页面间传汉字参数转码

    转码:a.href="./showCont.jsp?tcontent="+encodeURI(encodeURI(tcontent)); 解码:java.net.URLDecode ...

  6. SQL Server 事务处理 回滚事务

    --创建表: GO CREATE TABLE [dbo].[tb1]( [Id] [int] NOT NULL, [c1] [nvarchar](50) NULL, [c2] [datetime] N ...

  7. .NET XML文件增删改查

    查询 采用的是DataSet 的 ReadXML方法. DataSet ds = new System.Data.DataSet(); ds.ReadXml("bdc.xml"); ...

  8. php面向对象的多态

    多态是指使用类的上下文来重新定义或改变类的性质或行为,或者说接口的多种不同的实现方式即为多态.把不同的子类对象都当成父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需要 ...

  9. (转)互联网保险O2O平台微服务架构设计

        关于架构,笔者认为并不是越复杂越好,而是相反,简单就是硬道理也提现在这里.这也是微服务能够流行的原因,看看市场上曾经出现的服务架构:EJB.SCA.Dubbo等等,都比微服务先进,都比微服务功 ...

  10. ThinkPHP中的模型

    ThinkPHP中的模型 1.什么是模型(Model) 模型表示企业数据和业务规则,实际项目开发中,主要实现与数据库进行操作. 2.模型的定义规则 模型类的命名规则是除去表前缀的数据表名称,采用驼峰法 ...