内容发布更新时间 : 2024/11/2 19:34:53星期一 下面是文章的全部内容请认真阅读。
cocos2dx之精灵类Sprite使用方法
精灵类
精灵类 Sprite 是一张二维图片对象,可以使用一张图片或者一张图片的一块矩形部分来定义。精灵对象可以移动,旋转,缩放,执行动画,并接受其他转换。Cocos2dx的 Sprite 由 Texture , Frame 和 Animation 组成,由OpenES负责渲染。 一般使用 Texture2D 加载图片,使用 Texture2D 生成对应的 SpriteFrame(精灵帧), SpriteFrame 添加到 Animation 生成动画数据,用 Animation 生成 Animate (就是最终的动画动作),最后用 Sprite 执行这个动作。
我们在游戏中,比如战场中的英雄、怪物等这些都是 Sprite ,对于 Sprite 的使用,直接关系到你对游戏的编写和控制。好吧,言重了,反正是比较重要的东西。理解 Sprite 的不同创建与加载方式,对游戏的性能都有很大的关系。废话不说,开始学习吧。 Sprite
不管是使用 Texture , Frame ,还是 Animation ,我们最终得到的是Sprite 对象,先来看看创建 Sprite 的函数。 /**
* 不适用任何纹理来创建一个空的精灵对象。我们可以在随后调用setTexture设置精灵的纹理
* @return 返回一个autoreleased的精灵对象
*/
static Sprite * create ( ) ; /**
* 通过一个image文件名来创建一个精灵对象
* 创建精灵完成以后,精灵的大小就是这个image的大小,同时offset是(0, 0) *
* @param filename image文件的路径 * @return 返回一个autoreleased的精灵对象 */
static Sprite * create ( const std :: string & filename ) ; /**
* 通过一个image文件来创建一个精灵对象,并指定这个精灵在image文件中的位置和大小
* 注:这里的rect的坐标系统是UI坐标系统,从左上角开始计算 *
* @param filename image文件的路径 * @param rect 精灵的位置和大小
* @return 返回一个autoreleased的精灵对象 */
static Sprite * create ( const std :: string & filename , const Rect & rect ) ; /**
* 通过一个Texture2D对象来创建精灵对象
* 创建以后,这个精灵对象的大小就是这个纹理的大小,精灵的offset是(0, 0) *
* @param texture 一个Texture2D对象指针 * @return 返回一个autoreleased的精灵对象 */
static Sprite * createWithTexture ( Texture2D * texture ) ; /**
* Creates a sprite with a texture and a rect.
* 通过一个Texture2D对象来创建精灵对象,并指定这个精灵的位置和大小 *
* @param texture 指向Texture2D对象的指针,这个指针可以进行复用
* @param rect 精灵的位置和大小
* @param rotated 是否需要旋转这个精灵,逆时针旋转90° * @return 返回一个autoreleased的精灵对象 */
static Sprite * createWithTexture ( Texture2D * texture , const Rect & rect , boolrotated = false ) ; /**
* 通过精灵帧来创建一个精灵 *
* @param spriteFrame 一个精灵帧的指针 * @return 返回一个autoreleased的精灵对象 */
static Sprite * createWithSpriteFrame ( SpriteFrame * spriteFrame ) ; /**
* 通过一个精灵帧名字来创建一个精灵
* 内部实现中,会通过spriteFrameName参数从SpriteFrameCache中获取SpriteFrame对象
* 如果在SpriteFrameCache中没有对应的SpriteFrame, 会引发一个异常 *
* @param spriteFrameName 精灵帧的名字 * @return 返回一个autoreleased的精灵对象 */
static Sprite * createWithSpriteFrameName ( const std :: string & spriteFrameName );
上面这些都是创建 Sprite 对象的函数,我们在实际工作中也就是通过这些函数来完成 Sprite 的创建。你需要做的就是去熟练使用上面的函数。 Texture2D
在上面的代码中,可以看到,可以通过 Texture2D 对象来创建 Sprite 精灵。那
Texture2D 是什么东西呢? Texture2D 是OpenGL的概念。在OpenGL中称图片为贴图,在Cocos2d-x中 Texture2D 就是图片对象的意思,可以通过它创建精灵等对象。先来看看创建 Texture2D 对象的几个常见函数。 bool initWithImage ( Image * image ) ;
通过一个 Image 对象来初始化 Texture2D 对象。这个在实际工作中用的比较多。比如以下代码:
Texture2D * texture = nullptr ;