层和场景是其他游戏元素的容器,如果没有向它们添加可见的游戏元素,它们看起来就一直是透明的。精灵则与层和场景不同,它隶属于层,是场景中出现的可见图形。

玩家控制的主角、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 高级开发教程》火烈鸟网络科技 编著

CCSprite:精灵相关推荐

  1. cocos2d-x 中创建 CCSprite 精灵动画

    本文原创版权归 博客园 Terry_龙 所有,转载请标明原创作者及出处,以示尊重! 作者:Terry_龙 原文:http://www.cnblogs.com/TerryBlog/archive/201 ...

  2. [windows+cocos2dx]CCSprite精灵类

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

  3. 【iOS-Cocos2d游戏开发之二十】精灵的基础知识点总汇(位图操作/贴图更换/重排z轴等)以及利用CCSprite与CCLayerColor制作简单遮盖层!...

    为什么80%的码农都做不了架构师?>>>     李华明Himi 原创,转载务必在明显处注明: 转载自 [黑米GameDev街区] 原文链接:  http://www.himigam ...

  4. 【Cocos2dx开发】精灵

    [Cocos2dx开发]精灵 写在前面--有不对的地方,烦请大家批评指正,我也会继续努力提高自己.如果转载请注明出处,谢谢大家支持--Forward.                         ...

  5. 【iOS-Cocos2d游戏开发之五】【1】多触点与触屏事件详解(单一监听、事件分发)...

    本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/iphone-cocos2d/450.html ...

  6. 疯狂ios之疯狂打飞机游戏(3)

    13.14.7添加敌机 游戏当中怎么能少了千军万马的敌人呢?现在,我们来添加一些敌机,大量的敌机将从屏幕上方随机出现,并以随机的速度向下俯冲.这些敌机暂时不会发射子弹,之后读者可以自己添加该功能.具体 ...

  7. Cocos2d-x的坐标系统

    推荐转至此处阅读<Cocos2d-x的坐标系统> Cocos2d-x的坐标系统 一.坐标系 二.Cocos2d-x的坐标系统 1.类别 2.定义 三.屏幕坐标系 & OpenGL坐 ...

  8. cocos2dx基础篇(9)——触碰事件Touch

    [唠叨] cocos2dx游戏引擎的重点是在于移动设备的跨平台开发,而移动设备上的游戏大部分都是通过屏幕触碰来进行的.比如主菜单的按钮触碰,打飞机中飞机的触碰移动,都需要用到触碰操作.想一想之前讲的菜 ...

  9. C语言到嵌入式Linux开发项目指导

    C语言到嵌入式Linux开发项目指导 第一阶段C语言 1.常量与变量,数据类型,数据类型转换,数据输入与输出: 2.C语言运算符,C语言操作符,C语言表达式,表达式优先级: 3.C语言流程控制,分支, ...

  10. 【cocos2d-x】游戏构成要素③----游戏关卡的实现

    到目前为止,我们讨论了多个场景和多个层的应用.现在我们来讨论关卡. 大家应该对关卡的概念都很熟悉,所以我不在这里做解释了.设计关卡的难点是决定用什么样的方式来设计基于关卡的游戏. 在Cocos2d-x ...

最新文章

  1. 吐槽知乎现任搜索引擎
  2. C# 使用XML序列化对象(一)
  3. fragtats中连接度指数(CONNECT)的具体解释
  4. C语言函数在硬件中的执行原理
  5. Step one : 熟悉Unix/Linux Shell 常见命令行 (四)
  6. 【JavaScript】我所知道的JavaScript
  7. LEARNING TO EXPLORE USING ACTIVE NEURAL SLAM
  8. RGB颜色 取色器/拾色器 颜色混搭
  9. MATLAB之方程组求解(八)
  10. 华为交换机eth口作用_华为网络交换机mode键作用 华为交换机这些接口的作用?...
  11. 寿司大厨Sushiswap挥刀Uniswap背后:或将消灭传统VC
  12. opencv证件照变更任意底色
  13. SQL语句编写经典50题
  14. MindManager2022免序列号弹窗解除功能限制
  15. Mac安装与配置jmeterjmeter的使用jmeter生成性能测试报告
  16. js ... es6中三个点是什么意思 真名叫扩展运算符
  17. python 模拟微信浏览器请求_用chrome在电脑上模拟微信内置浏览器
  18. 网络空间技能大赛A模块(乱)
  19. 球半篮球分析,WNBA:风暴 vs 梦想
  20. 从事计算机编程工作有前途吗,沙坪坝计算机编程培训有前途吗

热门文章

  1. 讯众及时会视频签约,开启复工复产务实新风尚
  2. VS配置FFmpeg踩坑后的成功版
  3. solidity开篇:区块链基础
  4. 我让小屋更漂亮计算机教案,漂亮的房间教案
  5. 三星SideSync下载,一个神奇的软件_我是亲民_新浪博客
  6. linux无法连接上网
  7. linux中配置网桥的命令是下列哪一项,Linux认证考试模拟试题及答案
  8. 逻辑回归损失函数求导过程
  9. 小米8se 安装PIXEL及各种问题的解决
  10. 测试者出的APP测试面试题