精灵是我们在cocos开发中经常会接触到的概念,我们在cocos中对图形图像进行控制都是通过精灵来完成的。我们可以把精灵理解为一个显示图片的载体,被它加载显示的既可以是单图片也可以是序列帧图片。同时,我们还可以控制它的位置、颜色、大小等属性。
精灵Sprite的创建方法主要可以归纳为3种,这里就进行一下总结:
方法一.使用create()方法通过图片直接创建精灵
我们看一下cocos源码:
//不通过任何纹理创建一个空的精灵对象。 //可以在随后调用setTexture方法设置纹理 static Sprite* create(); //通过一个 image文件名来创建一个精灵对象 //创建之后,精灵的大小就是image的大小 static Sprite* create(const std::string& filename); //通过一个多边形信息来创建一个精灵对象 static Sprite* create(const PolygonInfo& info); //通过一个 image文件名来创建一个精灵对象 //rect指定这个精灵的位置和大小 static Sprite* create(const std::string& filename, const Rect& rect);
举个栗子:
auto sprite = Sprite::create(“MyImage.png”); this ->addChild(sprite);
方法二.使用createWithTexture()方法通过纹理创建精灵
cocos源码:
//通过一个Texture2D对象来创建一个精灵对象 //创建之后,精灵的大小就是texture的大小 static Sprite* createWithTexture(Texture2D *texture); //通过一个Texture2D对象来创建一个精灵对象 //rect指定这个精灵的位置和大小 //rotated是否需要旋转这个精灵,逆时针旋转90度 static Sprite* createWithTexture(Texture2D *texture, const Rect& rect, bool rotated=false);
举个栗子:
auto sprite = Sprite::createWithTexture(TextureCache::getInstance()->addImage(“MyImage.png”)); this ->addChild(sprite);
方法三.使用createWithSpriteFrame()方法通过精灵帧创建精灵
cocos源码:
//通过一个精灵帧来创建一个精灵对象 //精灵帧中包含一个纹理和其位置、大小等信息 tatic Sprite* createWithSpriteFrame(SpriteFrame *spriteFrame); //通过一个精灵帧名字来创建一个精灵对象 //通过精灵帧名字从帧缓存SpriteFrameCache中取出精灵 //如果精灵帧在帧缓存中不存在会引发一个异常 static Sprite* createWithSpriteFrameName(const std::string& spriteFrameName);
举个栗子:
//首先创建一个精灵帧 //参数为显示区域大小左下右上 auto spriteFrame = SpriteFrame::create(“MyImage.png”,Rect(0,0,774,490)); //通过精灵帧创建精灵 auto sprite = Sprite::createWithSpriteFrame(spriteFrame); this ->addChild(sprite);
以上。