【玩转cocos2d-x之八】精灵类CCSprite
原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12747385
精灵类CCSprite可以说是游戏的主角了,也是我们平时最常用到的类。
1.概况
CCSprite本质上就是一个二维图片,是静态的。游戏中的动画只不过是让一张张静态图片快速更换达到的动态效果。CCSprite继承于CCNodeRGBA,并实现了CCTextureProtocol的接口。因此CCNodeRGBA所具有的RGB和透明值这些属性和接口CCSprite都有,而CCTextureProtocol是一个抽象类,定义了和纹理相关的两个标准接口:
- //返回当前使用的纹理
- virtual CCTexture2D* getTexture(void) = 0;
- //设置一个新的纹理,它会被retain
- virtual void setTexture(CCTexture2D *texture) = 0;
2.常用接口
2.1.初始化
- //初始化函数
- virtual bool init(void);
- //用CCTexture2D纹理来初始化,精灵大小即是纹理大小
- virtual bool initWithTexture(CCTexture2D *pTexture);
- ///用CCTexture2D纹理和大小来初始化
- virtual bool initWithTexture(CCTexture2D *pTexture, const CCRect& rect);
- //用CCTexture2D纹理,大小,旋转来初始化
- virtual bool initWithTexture(CCTexture2D *pTexture, const CCRect& rect, bool rotated);
- //用CCSpriteFrame精灵帧来初始化
- virtual bool initWithSpriteFrame(CCSpriteFrame *pSpriteFrame);
- //用CCSpriteFrame精灵帧名来初始化
- virtual bool initWithSpriteFrameName(const char *pszSpriteFrameName);
- //用外部文件初始化,外部文件会先被创建为纹理,再用纹理初始化精灵
- virtual bool initWithFile(const char *pszFilename);
- //用外部文件和大小来初始化
- virtual bool initWithFile(const char *pszFilename, const CCRect& rect);
2.2.继承自CCTextureProtocol
- //设置/获取纹理
- virtual void setTexture(CCTexture2D *texture);
- virtual CCTexture2D* getTexture(void);
- //设置/获取颜色描绘时混合方案
- void setBlendFunc(ccBlendFunc blendFunc);
- ccBlendFunc getBlendFunc(void);
2.3.继承自CCNode
参见CCNode。
- virtual void setScaleX(float fScaleX);
- virtual void setScaleY(float fScaleY);
- virtual void setPosition(const CCPoint& pos);
- virtual void setRotation(float fRotation);
- virtual void setRotationX(float fRotationX);
- virtual void setRotationY(float fRotationY);
- virtual void setSkewX(float sx);
- virtual void setSkewY(float sy);
- virtual void removeChild(CCNode* pChild, bool bCleanup);
- virtual void removeAllChildrenWithCleanup(bool bCleanup);
- virtual void reorderChild(CCNode *pChild, int zOrder);
- virtual void addChild(CCNode *pChild);
- virtual void addChild(CCNode *pChild, int zOrder);
- virtual void addChild(CCNode *pChild, int zOrder, int tag);
- virtual void sortAllChildren();
- virtual void setScale(float fScale);
- virtual void setVertexZ(float fVertexZ);
- virtual void setAnchorPoint(const CCPoint& anchor);//默认(0.5,0.5)
- virtual void ignoreAnchorPointForPosition(bool value);
- virtual void setVisible(bool bVisible);
- virtual void draw(void);
2.4.继承自CCNodeRGBA
- //设置颜色
- virtual void setColor(const ccColor3B& color3);
- //传递颜色
- virtual void updateDisplayedColor(const ccColor3B& parentColor);
- //设置透明度
- virtual void setOpacity(GLubyte opacity);
- //设置/返回透明度是否跟随颜色值变化而变化
- virtual void setOpacityModifyRGB(bool modify);
- virtual bool isOpacityModifyRGB(void);
- //传递透明度
- virtual void updateDisplayedOpacity(GLubyte parentOpacity);
2.5.批节点
- //更新4属性:x,y,rotation,scale
- virtual void updateTransform(void);
- //如果精灵是由批节点CCSpriteBatchNode渲染的,则返回批节点
- virtual CCSpriteBatchNode* getBatchNode(void);
- //设置批节点,不推荐使用
- virtual void setBatchNode(CCSpriteBatchNode *pobSpriteBatchNode);
2.6.纹理
- //设置纹理区域
- virtual void setTextureRect(const CCRect& rect);
- virtual void setTextureRect(const CCRect& rect, bool rotated, const CCSize& untrimmedSize);
- virtual void setVertexRect(const CCRect& rect);
2.7.精灵帧和动画
- //设置新的精灵帧
- virtual void setDisplayFrame(CCSpriteFrame *pNewFrame);
- //返回精灵帧是否在使用
- virtual bool isFrameDisplayed(CCSpriteFrame *pFrame);
- //返回当期使用精灵帧
- virtual CCSpriteFrame* displayFrame(void);
- //设置动画和显示索引
- virtual void setDisplayFrameWithAnimationName(const char *animationName, int frameIndex);
2.8.Setter和Getter方法
设置/获取CCSprite属性。
- //设置获取是否更新
- virtual bool isDirty(void);
- virtual void setDirty(bool bDirty);
- //返回坐标、顶点、颜色信息
- ccV3F_C4B_T2F_Quad getQuad(void);
- //返回纹理旋转
- bool isTextureRectRotated(void);
- //返回/设置地图集索引
- unsigned int getAtlasIndex(void);
- void setAtlasIndex(unsigned int uAtlasIndex);
- //返回精灵区域,单位为点
- const CCRect& getTextureRect(void);
- //如果采用批渲染,返回/设置纹理地图集
- CCTextureAtlas* getTextureAtlas(void);
- inline void setTextureAtlas(CCTextureAtlas *pobTextureAtlas);
- //获取偏移
- const CCPoint& getOffsetPosition(void);
- //设置返回翻转
- bool isFlipX(void);
- void setFlipX(bool bFlipX);
- bool isFlipY(void);
- void setFlipY(bool bFlipY);
版
【玩转cocos2d-x之八】精灵类CCSprite相关推荐
- Cocos2D研究院之精灵与动画
转载自雨松MOMO程序研究院本文链接地址:Cocos2D研究院之精灵与动画(六) 通过对导演.场景.层和节点的剖析,现在我们已经可以写出一个完整的游戏体系了,在实际应用中,场景一般都是作为游戏的关卡, ...
- [windows+cocos2dx]CCSprite精灵类
序言 回想cocos2dx,之前在mac+Xcode平台学习了一遍cocos2dx,一年时间不接触cocos了.一直在搞Unity3d.如今还是就之前所学温故温故,但不再用Xcode来写.用经常使用的 ...
- cocos2d-x初探学习笔记(21)--精灵类
小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 在游戏中还有一个比较重要的元素,那就是精灵类, ...
- pygame显示图片的方法_使用Sprite实现移动动画(Pygame中的精灵类)
pygame.sprite.Sprite就是Pygame里面用来实现精灵的一个类,使用时,并不需要对它实例化,只需要继承他,然后按需写出自己的类就好了,因此非常简单实用. 什么是精灵? 精灵可以认为成 ...
- Pygame入门 2022 (4) 使用精灵类重构
前面3章已经完成了游戏,这章使用OOP风格重构游戏,然后给游戏添加一点音乐. 用精灵类重构 如果你完成了前3章的代码,应该会发现代码很乱.想更改某个代码?查找困难.修改起来更困难!不断添加的新功能让我 ...
- 【TB-02模组专题⑦】TB02二次开发玩转各种接入天猫精灵智能家居产品,彩灯、灯具、插座、单火线总有一款适合你。
本<安信可ble mesh蓝牙模组TB-02模组专题>系列博客学习由官方博客 CSDN安信可博客 潜心所力所写.如有不对之处,请留言,我们及时更改. 1.BLE MESH开发环境linux ...
- pygame之飞机大战 sprite精灵类实现源代码和资源下载链接
用pygame的sprite 重写了飞机大战 实现功能: 英雄机:按住按键连续发射 子弹:各种子弹,静态的,动态的,不同的子弹不同的伤害. 发射方式:花样的发射方式,单.双.三.45度--,各种发射方 ...
- Python 精灵类
小球精灵类 精灵: 在游戏开发中,在游戏中显示的图片,皆可称为精灵.通常,精灵表示游戏中所有运动的部分. 比如 :敌人,子弹,英雄,云彩等等 sprite类: 在pygame中,提供了一个精灵类Spr ...
- 定义父亲类Father(姓lastName,财产property,血型bloodType),儿子Son类(玩游戏PlayGame方法),女儿Daughter类(跳
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _02C ...
最新文章
- C语言找最大的int型数!_只愿与一人十指紧扣_新浪博客
- Emacs之爬坑日记(一)
- 如何及时获得AI顶尖科研团队的最新论文与进展?你需要一份AI内参!
- 查看python库的版本-python中查看第三方库的版本号
- js常见问题之为什么点击弹出的i总是最后一个
- 【MM模块】Procurement for Stock Material 库存型物料采购相关
- IOS开发-关于代码管理工具之SVN
- python库下载安装报错_Python 各种库的安装
- HTML 中img标签不显示
- HDF5数据模型介绍及h5py
- 汉字一级字库与二级字库
- linux系统上查询ip地址归属
- java随机数种子_使用种子的Java随机数
- UDA/语义分割/ICCV2021:Dual Path Learning for Domain Adaptation of Semantic Segmentation语义分割领域自适应的双路径学习
- 大数据分析案例-用RFM模型对客户价值分析(聚类)
- 郭天祥写的《我的大学》
- marve register license
- PostgreSQL修改用户密码
- 二手车行业临近洗牌时间
- pc 端与移动端区分点击与拖拽事件
热门文章
- MapReduce-流量统计求和-Reducer和JobMain代码编写
- HDFS的Secondarynamenode工作机制
- try_catch_异常处理的第二种方式,自己处理异常
- 单继承-继承的概念和语法
- Ubuntu开放指定端口
- SpringBoot_web开发-webjars静态资源映射规则
- 代理模式源码解析(jdk+spring+mybatis)
- 元素的选中问题 元素选中的问题 切换复选框选中 全选和全不选
- 【java】动态绑定机制
- 数字转换英语c语言程序,c语言 把英文数字 例如 one hundred and eleven 转换位数字 111;怎样编写程序,要求1~1000内的英文数字...