原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12747385

精灵类CCSprite可以说是游戏的主角了,也是我们平时最常用到的类。

1.概况

CCSprite本质上就是一个二维图片,是静态的。游戏中的动画只不过是让一张张静态图片快速更换达到的动态效果。CCSprite继承于CCNodeRGBA,并实现了CCTextureProtocol的接口。因此CCNodeRGBA所具有的RGB和透明值这些属性和接口CCSprite都有,而CCTextureProtocol是一个抽象类,定义了和纹理相关的两个标准接口:

[cpp] view plaincopy
  1. //返回当前使用的纹理
  2. virtual CCTexture2D* getTexture(void) = 0;
  3. //设置一个新的纹理,它会被retain
  4. virtual void setTexture(CCTexture2D *texture) = 0;

2.常用接口

2.1.初始化

[cpp] view plaincopy
  1. //初始化函数
  2. virtual bool init(void);
  3. //用CCTexture2D纹理来初始化,精灵大小即是纹理大小
  4. virtual bool initWithTexture(CCTexture2D *pTexture);
  5. ///用CCTexture2D纹理和大小来初始化
  6. virtual bool initWithTexture(CCTexture2D *pTexture, const CCRect& rect);
  7. //用CCTexture2D纹理,大小,旋转来初始化
  8. virtual bool initWithTexture(CCTexture2D *pTexture, const CCRect& rect, bool rotated);
  9. //用CCSpriteFrame精灵帧来初始化
  10. virtual bool initWithSpriteFrame(CCSpriteFrame *pSpriteFrame);
  11. //用CCSpriteFrame精灵帧名来初始化
  12. virtual bool initWithSpriteFrameName(const char *pszSpriteFrameName);
  13. //用外部文件初始化,外部文件会先被创建为纹理,再用纹理初始化精灵
  14. virtual bool initWithFile(const char *pszFilename);
  15. //用外部文件和大小来初始化
  16. virtual bool initWithFile(const char *pszFilename, const CCRect& rect);

2.2.继承自CCTextureProtocol

[cpp] view plaincopy
  1. //设置/获取纹理
  2. virtual void setTexture(CCTexture2D *texture);
  3. virtual CCTexture2D* getTexture(void);
  4. //设置/获取颜色描绘时混合方案
  5. void setBlendFunc(ccBlendFunc blendFunc);
  6. ccBlendFunc getBlendFunc(void);

2.3.继承自CCNode

参见CCNode。

[cpp] view plaincopy
  1. virtual void setScaleX(float fScaleX);
  2. virtual void setScaleY(float fScaleY);
  3. virtual void setPosition(const CCPoint& pos);
  4. virtual void setRotation(float fRotation);
  5. virtual void setRotationX(float fRotationX);
  6. virtual void setRotationY(float fRotationY);
  7. virtual void setSkewX(float sx);
  8. virtual void setSkewY(float sy);
  9. virtual void removeChild(CCNode* pChild, bool bCleanup);
  10. virtual void removeAllChildrenWithCleanup(bool bCleanup);
  11. virtual void reorderChild(CCNode *pChild, int zOrder);
  12. virtual void addChild(CCNode *pChild);
  13. virtual void addChild(CCNode *pChild, int zOrder);
  14. virtual void addChild(CCNode *pChild, int zOrder, int tag);
  15. virtual void sortAllChildren();
  16. virtual void setScale(float fScale);
  17. virtual void setVertexZ(float fVertexZ);
  18. virtual void setAnchorPoint(const CCPoint& anchor);//默认(0.5,0.5)
  19. virtual void ignoreAnchorPointForPosition(bool value);
  20. virtual void setVisible(bool bVisible);
  21. virtual void draw(void);

2.4.继承自CCNodeRGBA

[cpp] view plaincopy
  1. //设置颜色
  2. virtual void setColor(const ccColor3B& color3);
  3. //传递颜色
  4. virtual void updateDisplayedColor(const ccColor3B& parentColor);
  5. //设置透明度
  6. virtual void setOpacity(GLubyte opacity);
  7. //设置/返回透明度是否跟随颜色值变化而变化
  8. virtual void setOpacityModifyRGB(bool modify);
  9. virtual bool isOpacityModifyRGB(void);
  10. //传递透明度
  11. virtual void updateDisplayedOpacity(GLubyte parentOpacity);

2.5.批节点

[cpp] view plaincopy
  1. //更新4属性:x,y,rotation,scale
  2. virtual void updateTransform(void);
  3. //如果精灵是由批节点CCSpriteBatchNode渲染的,则返回批节点
  4. virtual CCSpriteBatchNode* getBatchNode(void);
  5. //设置批节点,不推荐使用
  6. virtual void setBatchNode(CCSpriteBatchNode *pobSpriteBatchNode);

2.6.纹理

[cpp] view plaincopy
  1. //设置纹理区域
  2. virtual void setTextureRect(const CCRect& rect);
  3. virtual void setTextureRect(const CCRect& rect, bool rotated, const CCSize& untrimmedSize);
  4. virtual void setVertexRect(const CCRect& rect);

2.7.精灵帧和动画

[cpp] view plaincopy
  1. //设置新的精灵帧
  2. virtual void setDisplayFrame(CCSpriteFrame *pNewFrame);
  3. //返回精灵帧是否在使用
  4. virtual bool isFrameDisplayed(CCSpriteFrame *pFrame);
  5. //返回当期使用精灵帧
  6. virtual CCSpriteFrame* displayFrame(void);
  7. //设置动画和显示索引
  8. virtual void setDisplayFrameWithAnimationName(const char *animationName, int frameIndex);

2.8.Setter和Getter方法

设置/获取CCSprite属性。

[cpp] view plaincopy
  1. //设置获取是否更新
  2. virtual bool isDirty(void);
  3. virtual void setDirty(bool bDirty);
  4. //返回坐标、顶点、颜色信息
  5. ccV3F_C4B_T2F_Quad getQuad(void);
  6. //返回纹理旋转
  7. bool isTextureRectRotated(void);
  8. //返回/设置地图集索引
  9. unsigned int getAtlasIndex(void);
  10. void setAtlasIndex(unsigned int uAtlasIndex);
  11. //返回精灵区域,单位为点
  12. const CCRect& getTextureRect(void);
  13. //如果采用批渲染,返回/设置纹理地图集
  14. CCTextureAtlas* getTextureAtlas(void);
  15. inline void setTextureAtlas(CCTextureAtlas *pobTextureAtlas);
  16. //获取偏移
  17. const CCPoint& getOffsetPosition(void);
  18. //设置返回翻转
  19. bool isFlipX(void);
  20. void setFlipX(bool bFlipX);
  21. bool isFlipY(void);
  22. void setFlipY(bool bFlipY);

【玩转cocos2d-x之八】精灵类CCSprite相关推荐

  1. Cocos2D研究院之精灵与动画

    转载自雨松MOMO程序研究院本文链接地址:Cocos2D研究院之精灵与动画(六) 通过对导演.场景.层和节点的剖析,现在我们已经可以写出一个完整的游戏体系了,在实际应用中,场景一般都是作为游戏的关卡, ...

  2. [windows+cocos2dx]CCSprite精灵类

    序言 回想cocos2dx,之前在mac+Xcode平台学习了一遍cocos2dx,一年时间不接触cocos了.一直在搞Unity3d.如今还是就之前所学温故温故,但不再用Xcode来写.用经常使用的 ...

  3. cocos2d-x初探学习笔记(21)--精灵类

    小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 在游戏中还有一个比较重要的元素,那就是精灵类, ...

  4. pygame显示图片的方法_使用Sprite实现移动动画(Pygame中的精灵类)

    pygame.sprite.Sprite就是Pygame里面用来实现精灵的一个类,使用时,并不需要对它实例化,只需要继承他,然后按需写出自己的类就好了,因此非常简单实用. 什么是精灵? 精灵可以认为成 ...

  5. Pygame入门 2022 (4) 使用精灵类重构

    前面3章已经完成了游戏,这章使用OOP风格重构游戏,然后给游戏添加一点音乐. 用精灵类重构 如果你完成了前3章的代码,应该会发现代码很乱.想更改某个代码?查找困难.修改起来更困难!不断添加的新功能让我 ...

  6. 【TB-02模组专题⑦】TB02二次开发玩转各种接入天猫精灵智能家居产品,彩灯、灯具、插座、单火线总有一款适合你。

    本<安信可ble mesh蓝牙模组TB-02模组专题>系列博客学习由官方博客 CSDN安信可博客 潜心所力所写.如有不对之处,请留言,我们及时更改. 1.BLE MESH开发环境linux ...

  7. pygame之飞机大战 sprite精灵类实现源代码和资源下载链接

    用pygame的sprite 重写了飞机大战 实现功能: 英雄机:按住按键连续发射 子弹:各种子弹,静态的,动态的,不同的子弹不同的伤害. 发射方式:花样的发射方式,单.双.三.45度--,各种发射方 ...

  8. Python 精灵类

    小球精灵类 精灵: 在游戏开发中,在游戏中显示的图片,皆可称为精灵.通常,精灵表示游戏中所有运动的部分. 比如 :敌人,子弹,英雄,云彩等等 sprite类: 在pygame中,提供了一个精灵类Spr ...

  9. 定义父亲类Father(姓lastName,财产property,血型bloodType),儿子Son类(玩游戏PlayGame方法),女儿Daughter类(跳

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _02C ...

最新文章

  1. C语言找最大的int型数!_只愿与一人十指紧扣_新浪博客
  2. Emacs之爬坑日记(一)
  3. 如何及时获得AI顶尖科研团队的最新论文与进展?你需要一份AI内参!
  4. 查看python库的版本-python中查看第三方库的版本号
  5. js常见问题之为什么点击弹出的i总是最后一个
  6. 【MM模块】Procurement for Stock Material 库存型物料采购相关
  7. IOS开发-关于代码管理工具之SVN
  8. python库下载安装报错_Python 各种库的安装
  9. HTML 中img标签不显示
  10. HDF5数据模型介绍及h5py
  11. 汉字一级字库与二级字库
  12. linux系统上查询ip地址归属
  13. java随机数种子_使用种子的Java随机数
  14. UDA/语义分割/ICCV2021:Dual Path Learning for Domain Adaptation of Semantic Segmentation语义分割领域自适应的双路径学习
  15. 大数据分析案例-用RFM模型对客户价值分析(聚类)
  16. 郭天祥写的《我的大学》
  17. marve register license
  18. PostgreSQL修改用户密码
  19. 二手车行业临近洗牌时间
  20. pc 端与移动端区分点击与拖拽事件

热门文章

  1. MapReduce-流量统计求和-Reducer和JobMain代码编写
  2. HDFS的Secondarynamenode工作机制
  3. try_catch_异常处理的第二种方式,自己处理异常
  4. 单继承-继承的概念和语法
  5. Ubuntu开放指定端口
  6. SpringBoot_web开发-webjars静态资源映射规则
  7. 代理模式源码解析(jdk+spring+mybatis)
  8. 元素的选中问题 元素选中的问题 切换复选框选中 全选和全不选
  9. 【java】动态绑定机制
  10. 数字转换英语c语言程序,c语言 把英文数字 例如 one hundred and eleven 转换位数字 111;怎样编写程序,要求1~1000内的英文数字...