CCSprite:精灵
来源:互联网 发布:汽车行业数据分析 编辑:程序博客网 时间:2024/04/28 06:52
层和场景是其他游戏元素的容器,如果没有向它们添加可见的游戏元素,它们看起来就一直是透明的。精灵则与层和场景不同,它隶属于层,是场景中出现的可见图形。
玩家控制的主角、AI控制的NPC、以及地图上的宝箱、宝石,甚至游戏主菜单的背景图片都是精灵。因此,可以这样认为,玩家看到的一切几乎都是由精灵构成。
精灵不一定是静态的。通常,一个精灵可以不断的变化,变化的方式包括:移动、旋转、缩放、变形、显现消失、动画效果等。精灵按照层次结构组合起来,并与玩家互动,构成一个完整的游戏。
CCSprite可以说是游戏中最重要的组成元素,是CCNode的一个最重要也最灵活的子类。说它重要是因为CCSprite代表了游戏中一个最小的可见单位,说它灵活则是由于其装载了一个纹理,具有丰富的表现力,而且可以通过多种方式加载。
纹理
可以认为纹理就是一张图片,这张图片被精灵显示出来。更深层的讲,纹理是3D游戏中绘制到物体表面上的图案。虽然cocos2d-x是平面游戏引擎,但是它仍然使用了3D绘图库OpenGL。这样一来,我们既可以利用图形加速器提高绘图效率,也可以在游戏中加入3D变换特效,实现更绚丽的效果。为了在3D环境中绘制平面图形,cocos2d-x只需在3D空间中垂直于视线的平面上绘制矩形,在矩形的表面使用纹理贴图即可。
创建精灵
- 使用图片文件
static CCSprite* create(const char *pszFileName); //适用于要显示的是这张精灵的全部区域
static CCSprite* create(const char *pszFileName, const CCRect& rect); //适用于要显示的是这张精灵的部分区域
virtual bool initWithFile(const char *pszFilename);
virtual bool initWithFile(const char *pszFilename, const CCRect& rect);
其中pszFileName为图片的文件名,直接传入图片文件相当于"Resource"文件夹的路径即可;
rect为可选参数,用于指定精灵显示纹理的部分,它是用前面介绍的纹理坐标系。
- 使用CCTexture2D
static CCSprite* createWithTexture(CCTexture2D *pTexture); //
static CCSprite* createWithTexture(CCTexture2D *pTexture, const CCRect& rect);
virtual bool initWithTexture(CCTexture2D *pTexture);
virtual bool initWithTexture(CCTexture2D *pTexture, const CCRect& rect);
CCTexture2D类型的pTexture参数为纹理对象,可以使用CCTextureCache类的addImage方法把图片文件装载为纹理并返回。
- 使用CCSpriteFrame创建
static CCSprite* createWithSpriteFrame(CCSpriteFrame *pSpriteFrame);
static CCSprite* createWithSpriteFrameName(const char *pszSpriteFrameName);
virtual bool initWithSpriteFrame(CCSpriteFrame *pSpriteFrame);
virtual bool initWithSpriteFrameName(const char *pszSpriteFrameName);
CCSpriteFrame类型的pSpriteFrame参数为纹理框帧,CCSpriteFrame保存了一个CCTexture2D的引用与一个CCRect来表示纹理中的部分。
关于创建精灵的几种方法可以看这篇文章
纹理相关的属性
CCSprite提供了一下与纹理相关的属性,用于获取或设置内容。
CCTexture2D *Texture: 获取或设置精灵所用的纹理。使用此方法设置纹理后,精灵将显示一个完整的纹理。
CCRect textureRect: 获取或设置纹理显示部分。此CCRect采用纹理坐标,即左上角为原点(0,0)。
CCSpriteBatchNode *BatchNode: 获取或设置精灵所属的批节点。
纹理相关方法
virtual void setDisplayFrame(CCSpriteFrame *pNewFrame): 设置显示中的纹理框帧
virtual bool isFrameDisplayed(CCSpriteFrame *pFrame); 返回一个值,表示pFrame是不是正在显示中的纹理框帧。
virtual CCSpriteFrame* displayFrame(void); 获取正在显示的纹理帧。
以上内容摘自《cocos2d-x 高级开发教程》火烈鸟网络科技 编著
0 0
- CCSprite:精灵
- 精灵(CCSprite)
- CCSprite精灵
- CCSprite 精灵动画
- CCSprite 精灵使用
- CCSprite精灵的使用
- CCSprite 精灵使用
- cocos2dx中的精灵CCSprite
- CCSprite 精灵使用
- 精灵类CCSprite
- 精灵的淡入淡出(ccsprite)
- [windows+cocos2dx]CCSprite精灵类
- 纹理CCTexture2D和精灵CCSprite
- 纹理CCTexture2D和精灵CCSprite
- 精灵(CCSprite)自定义触摸事件
- cocos2d-x学习笔记-CCSprite(精灵)
- cocos2d-x for android --CCSprite精灵
- cocos2d-x学习笔记-CCSprite(精灵)
- OpenGL ES Game Development 第五章(实用操作篇,译者注)
- MFC文件读和写 + CArray集合类 + 随机函数 + 汉子字符处理
- Integer对象的几个疑惑
- spring-基于注解(Annotation)的配置(转)
- key-value数据库
- CCSprite:精灵
- 工信部向19家企业发放虚拟运营商牌照
- makefile中命令前加一个@
- Linux安装MediaWiki
- winpcap编译问题列表
- Observer
- 2014年2月至今 读书列表,持续更新
- 简单的Android之apk包反编译方法
- 走阶梯的走法