支持HW团队,就支付宝领取下面的红包吧!(2018年3月31前,就几毛,也会几块,可以和其他红包叠加使用),你领取消费,HW有奖励。红包使用无条件限制,有条件请注意是不是有病毒。

小伙伴们,给大家发红包喽!人人可领,领完就能用。祝大家领取的红包金额大大大!#吱口令#长按复制此消息,打开支付宝就能领取!er1OEj73Uj

登入 注册 | 验证
| 搜索

博主:初学MPEG

初学MPEG 本博客-采用Python的web框架Django与Mysql数据库,致力于对Python、Django的了解 与研究
Django技术QQ群:XXXXXXX
Python技术QQ群:XXXXXXX

分类

关键字

本站最新博文

友情链接  

[转][cocos2d-x] --- CCSprite类详解

类别:其他 状态:游客可见,可回,会员可关联(没审核) 阅读:2392 评论:0 时间:一月 18, 2017, 11:45 p.m.
关键字:cocos2d-x

 来源:http://blog.csdn.net/qiurisuixiang/article/details/8773787

1 在cocos2d-x中,精灵CCSprite是整个游戏开发处理的主要对象,例如天上的飞机、地上的坦克、玩家控制的任务等等都是精灵。甚至天上随机飘过的一朵白云、飞过的一只鸟也都是精灵。实际上,精灵就是一个可以不断变化的图片,变化包括位置变化、旋转、放大、运动等等。

2 可见,精灵在游戏中是十分重要的组成部分,随处可见。在cocos2d-x中,要用到图片展示的,基本上会使用到精灵类,CCSprite类在cocos2d-x中类结构图如下


3 为了能更清楚的了解精灵类,可以来学习下与精灵类相关的几个类

4 CCTexture2D 可以把它看成一个纹理,是cocos2d-x渲染图形的重要参数,用来贴图。因为cocos2d-x是使用OpenGL ES绘制2D图形的,它的尺寸是2的N次方,使用方法如下
CCTexture2D *cache = CCTexture2D::sharedTextureCache() -> addImage(“hero.png”);

5 CCSprite 精灵类,是CCNode的子类,CCSprite内部封装了CCTexture2D(纹理),初始化精灵对象的方法很多,可以参考/cocos2dx/sprite_nodes/CCSprite.h文件,常用的初始化精灵方法如下
(1) CCSprite *heroSprite = CCSPrite::create(“hero.png”);
(2) CCTexture2D *cache = CCTexture2D::sharedTextureCache() -> addImage(“hero.png”);
CCSprite *heroSprite = CCTexture2D:: createWithTexture(cache);

6 CCTextureCache 相当与CCTexture2D的容器,是内存池,用来缓存CCTexture2D对象,CCTextureCache里面有一个字典CCDictionary* m_pTextures; 该字典中key是图片的名称,value是CCTexture2D。当CCTextureCache调用addImage函数,会先根据图片名称去内存中查找是否存在(和C++中map类似),是则取出直接返回。
注意:当需要一次加载多张图片时,可以先把图片加载到CCTextureCache中,这样使用图片时的速度就会很快了

7 CCSpriteBatchNode 批处理绘制精灵类,主要用来提高精灵的绘制效率,当需要绘制的精灵数量越多时,效果越明显。cocos2d-x采用OpenGL ES绘制图片的,OpenGL ES绘制每个精灵时,都会执行open – draw – close流程。而CCSpriteBatchNode是把多个精灵放到一个纹理上,绘制时直接绘制该texture,不需要单独绘制子节点,这样OpengGL ES的绘制流程就成了open – draw – draw - … - draw – draw – close,所以节省了多次open、close的时间。CCSpriteBatchNode 内部封装了一个CCTextureAtlas(纹理图集,它内部封装了一个CCTexture2D)和一个CCArray(用来存储CCSpriteBatchNode的子节点:单个精灵)。
注意:因为绘制的时候只open – close一次,所以CCSpriteBatchNode对象的所有子节点必须和它是用同一个texture(纹理)

8 CCSpriteFrameCache 管理CCSpriteFrame的内存池,它跟CCTextureCache功能一样,不过和CCTextureCache不同的是,如果内存中不存在要查找的帧,它会提示找不到,而不会去本地加载图片

操作:

Please Login (or Sign Up) to leave a comment