CCSpriteBatchNode的特点和使用方法
来源:互联网 发布:软件开发人员资质证书 编辑:程序博客网 时间:2024/05/01 08:48
CCSpriteBatchNode是一个批处理绘制精灵节点,其特点是共享同一个纹理,CCSpriteBatchNode最大的优点就是将所有同属性的纹理进行一次绘制,CCSpriteBatchNode并不能添加CCLabel之类(继承自CCNode的节点),仅处理共享纹理的精灵。另外一点特别要注意的是CCSpriteBatchNode通过addSpriteWithoutQuad增加子节点的方式跟其他addChild的方式不太一样的地方就是,CCSpriteBatchNode在调用addChild之后需要其子节点调用release()节点,减少一次引用计数,其原因如下:
咱们先看看CCSpriteBatchNode增加子节点的源代码,
CCSpriteBatchNode * CCSpriteBatchNode::addSpriteWithoutQuad(CCSprite*child, unsigned int z, int aTag)
{
CCAssert( child != NULL, "Argument must be non-NULL");
CCAssert( dynamic_cast<CCSprite*>(child), "CCSpriteBatchNode only supports CCSprites as children");
// quad index is Z
child->setAtlasIndex(z);
// XXX: optimize with a binary search
int i=0;
CCObject* pObject = NULL;
CCARRAY_FOREACH(m_pobDescendants, pObject)
{
CCSprite* pChild = (CCSprite*) pObject;
if (pChild && (pChild->getAtlasIndex() >= z))
{
++i;
}
}
m_pobDescendants->insertObject(child, i);//对子节点引用计数一次
// IMPORTANT: Call super, and not self. Avoid adding it to the texture atlas array
CCNode::addChild(child, z, aTag);//调用基类的接口,增加子节点,对子节点引用计数一次
//#issue 1262 don't use lazy sorting, tiles are added as quads not as sprites, so sprites need to be added in order
reorderBatch(false);
return this;
}
从代码注释的地方看到,节点被引用计数了两次。为了避免内存泄露,需要将子节点release()调用一次,这是我看测试发现了,如果有解释不合理或者不正确的地方希望大家能指正批评。
- CCSpriteBatchNode的特点和使用方法
- CCSpriteBatchNode 和 CCSpriteFrameCache 的区别
- Jquery AJAX 框架的特点和使用方法
- 多种sock_raw的特点和使用方法
- CCSpriteBatchNode和CCSpriteFrameCache的区别及用法
- PDF转换成PPT转换器的特点和使用方法
- GCD 同步 异步 串行 并发的使用方法.例子 和特点
- GCD 同步 异步 串行 并发的使用方法.例子 和特点
- Maven的特点与使用方法
- CCSpriteBatchNode 和 CCTextureAtlas 详解
- cocos2d - CCSpriteBatchNode的使用
- cocos2d - CCSpriteBatchNode的使用
- cocos2d CCSpriteBatchNode的用法
- CCSpriteBatchNode 的使用
- CCSpriteBatchNode的使用
- cocos2d - CCSpriteBatchNode的使用
- CCSpriteBatchNode的作用,使用
- CCSpriteBatchNode
- 从赌钱游戏看PageRank算法
- 概率论略点
- 下载Chrome独立版(alternate/offline Installer)的地方
- 成绩处理
- 项目引用数据库驱动的三种方法(非JDNI datasource)
- CCSpriteBatchNode的特点和使用方法
- 第三章(JAVA基本的程序设计结构)
- 自定义AutoCompleteTextView
- makefile中wildcard notdir patsubst的简单介绍
- AndroidAnnotations——Injecting Views视图注入
- 编译DSP代码出现未定义符号__strasgi问题
- 成绩排名
- java多线程的几种状态
- Qt显示多种字号大小