继承关系

CCSpriteBatchNode -> CCNode, CCTextureProtocol

成员变量

inline CCTextureAtlas* getTextureAtlas(void)

inline void setTextureAtlas(CCTextureAtlas* textureAtlas)

获取/设置纹理图集,纹理图集是管理一张大图纹理和区域信息结构体

static CCSpriteBatchNode* createWithTexture(CCTexture2D* tex, unsigned int capacity);

static CCSpriteBatchNode* createWithTexture(CCTexture2D* tex) ;

static CCSpriteBatchNode* create(const char* fileImage, unsigned int capacity);

static CCSpriteBatchNode* create(const char* fileImage)

创建一个CCSpriteBatchNode对象

bool initWithTexture(CCTexture2D *tex, unsigned int capacity);

bool initWithFile(const char* fileImage, unsigned int capacity);

bool init();

初始化CCSpriteBatchNode对象

void increaseAtlasCapacity();

扩容

void removeChildAtIndex(unsigned int index, bool doCleanup);

删除一个精灵

void insertChild(CCSprite *child, unsigned int index);

void appendChild(CCSprite* sprite);

增加精灵

void removeSpriteFromAtlas(CCSprite *sprite);

将精灵从贴图集中删除

unsigned int rebuildIndexInOrder(CCSprite *parent, unsigned int index);

重构子节点索引

unsigned int highestAtlasIndexInChild(CCSprite *sprite);

unsigned int lowestAtlasIndexInChild(CCSprite *sprite);

unsigned int atlasIndexForChild(CCSprite *sprite, int z);

取得精灵对应的z轴下标

virtual CCTexture2D* getTexture(void);

virtual void setTexture(CCTexture2D *texture);

获取/设置纹理

virtual void setBlendFunc(ccBlendFunc blendFunc);

virtual ccBlendFunc getBlendFunc(void);

设置/获取混合函数

virtual void visit(void);

访问,重画节点

virtual void addChild(CCNode * child);

virtual void addChild(CCNode * child, int zOrder);

virtual void addChild(CCNode * child, int zOrder, int tag);

增加子精灵

virtual void reorderChild(CCNode * child, int zOrder);

virtual void removeChild(CCNode* child, bool cleanup);

virtual void removeAllChildrenWithCleanup(bool cleanup);

删除子精灵

virtual void sortAllChildren();

对精灵排序

virtual void draw(void);

绘制

总结

CCSpriteBatchNode是对一批相同纹理的精灵的封装,通过CCSpriteBatchNode封装之后,能提高渲染效率。

在实际工作中,精灵很多,而且很多精灵都是一样的,比如在飞机大战中,所有的子弹都是一样的,那么子弹就可以用CCSpriteBatchNode封装以提高效率。

cocos2dx进阶学习之CCSpriteBatchNode的更多相关文章

  1. cocos2dx进阶学习之场景切换

    背景 在学习马里奥时,我们学习到从菜单场景到游戏场景的切换,代码如下 void CMMenuScene::OnStartCallBack( CCObject *pSender ) { CCDirect ...

  2. cocos2dx进阶学习之CCSprite

    继承关系 CCSprite -> CCNodeRGBA       ->   CCNode, CCRGBAProtocol CCTextureProtocol 从继承关系可以看出,CCSp ...

  3. cocos2dx进阶学习之CCScene

    继承关系 CCScene -> CCNode -> CCObject CCScene抽象了一个场景的概念,类似舞台的一幕 函数 static CCScene *create(void); ...

  4. cocos2dx进阶学习之屏幕适配

    背景 在学习cocos2dx时,我们在main函数中发现一句代码, #include "main.h" #include "AppDelegate.h" #in ...

  5. cocos2dx进阶学习之CCEGLView

    继承关系 CCEGLView-> CCEGLViewProtocol CCEGLView是窗口,在不同平台上有不同的实现,而CCEGLViewProtocol是CCEGLView定义的接口,所以 ...

  6. cocos2dx进阶学习之CCAction

    CCAction在cocos2dx中,抽象了节点的动作.它由CCObject派生,因此它不是渲染节点. 它经常的用法是,创建一个action,然后让某个CCNode对象(一般是精灵),去执行它. 在马 ...

  7. cocos2dx进阶学习之瓦片地图编辑器

    之前学习了瓦片地图类,现在我们来学习下瓦片地图制作工具 这个是开源的工具,可以从网上下载,下面我们演示下怎么做地图 步骤1 将需要用到的图片放到一个目录下,比如我机器上就是d:\tiled,这些图片是 ...

  8. cocos2dx进阶学习之CCTMXLayer

    继承关系 CCTMXLayer -> CCSpriteBatchNode CCTMXLayer是在瓦片地图中,抽象一个层的类,它继承自CCSpriteBatchNode,也就是说它抽象了一批相同 ...

  9. cocos2dx进阶学习之CCTMXTiledMap

    继承关系 CCTMXTiledMap -> CCNode 它由CCNode派生,我们已经知道CCNode是cocos2dx的舞台对象的公共父类,所以CCTMXTiledMap也是个舞台对象 成员 ...

随机推荐

  1. poj1363Rails(栈模拟)

    主题链接: id=1363">啊哈哈,点我点我 思路: 这道题就是一道简单的栈模拟. .. .我最開始认为难处理是当出栈后top指针变化了. .当不满足条件时入栈的当前位置怎么办.这时 ...

  2. 让微信二维码扫描你的APK

    二维码深入人心,很多App都在官网挂出了可以扫描下载apk的二维码,笔者所在公司的产品也不例外.一般二维码编码的URL不会直接放apk而是放中间地址,通过这个中间地址再跳转到apk所在URL,原因大概 ...

  3. openstack 源码分析

    Nova对于底层Hypervisor(如KVM/QEMU等)的调用与管理主要通过LibvirtDriver类,nova/virt/libvirt/driver.py Libvirt对Hyperviso ...

  4. BootStrap 智能表单系列 八 表单配置json详解

    本章属于该系列的高级部分,将介绍表单中一些列的配置 1.config列的配置: 主要用于控制布局 :config:{autoLayout:true|'1,2,2,4'} true:根据配置项最里层的数 ...

  5. 3. 表单输入框 在 IE 中 会有 “X” 和 类似wifi图标的图标出现

    原因: IE 自动给 input加了伪类 ::ms-clear 和 ::ms-reveal 解决: input::ms-clear, input::ms-reveal { display: none; ...

  6. JS学习之prototype属性

    javascript中的每个对象都有prototype属性,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用.以A.prototype = new B();为例, 理 ...

  7. POJ_1698_Alice's Chance

    #include <iostream> #include <queue> #include <climits> #include <cstring> u ...

  8. Android 开发笔记 “弹出框”

    AlertDialog.Builder builder = new AlertDialog.Builder(Activity.this); builder.setMessage("Are y ...

  9. codevs 1515 跳 贪心+lucas

    题目链接 一个人初始在(0, 0), 想到(n, m)去, 没到一个格子, 花费的值为C(n, m), 求最小值. C(n, m)的定义为, 如果n==0||m==0, 则为1, 否则C(n, m) ...

  10. 关于地址的理解 C++

    #include <iostream> using namespace std; int main(){ ; int* ptr; ptr=&a; cout<<& ...