1、什么是精灵
精灵是一个2D图像,通过改变它的旋转、角度、位置、尺寸、颜色等属性可以使其运动或者变换。
2、创建精灵
可以通过不同格式的图片(png,jpeg,tiff 等等)创建精灵。
auto mySprite=Sprite::Create("mysprite.png");
上面的代码在创建精灵时候使用了整张图片,也就是说,这种方式生成的Sprite显示的是一张图片文件的全部。如果Sprite只要显示一张图片文件的某个部分,那么可以使用Rect,但是需要注意的是Rect只能指定矩形区域。
auto mySprite=Sprite::Create("mysprite.png",Rect(0,40,40));//前面两个参数是确定相对左上角的起点位置,后面两个参数是确定相对左上角的终点位置。
注意:Rect是以左上角为坐标原点的,这与以左下角为原点的屏幕布局坐标不同!
在没有指定Rect的情况下,cocos2dx将自动使用指定图片之全部长宽来创建精灵。
3、使用Sprite Sheet创建精灵
Sprite Sheet是将多个精灵所需的图片合并到一个文件的方法。相对于把每个精灵所需的图片放在单独的文件中,这种集中存放图片的方式更节省内存,减少了文件大小,加载速度更快。
创建Sprite Sheet可以借用专用工具:Cocos Studio 或者 Texture Packer 或者 Zwoptex
SpriteFrame对象包含一个图片文件名(这个图片不一定是单独存储的,也可以是plist文件中的局部图片)和一个指定精灵尺寸(Rect)的对象,SpriteFrameCache是一个缓存SpriteFrame的类。使用SpriteFrameCache可以避免重复加载SpriteFrame。
auto mySpriteCache = SpriteFrameCache::getIstance();
mySpriteCache -> addSpriteWithFile("sprites.plist"); // 将Sprite Sheet 加载到SpriteFrameCache
// 将plist文件加载进缓存之后,从SpriteFrameCache中获取精灵有如下两种等价方式,这两种方式加载的图片都是来自"sprites.plist"文件
//第一种方式
auto mySprite1 = Sprite::createWithSpriteFrameName("mySprite1 .png");
//第二种方式
auto mySpriteFrame =mySpriteCache -> getSpriteByName("mySprite2 .png");
automySprite2 =Sprite::createWithSpriteFrame(mySpriteFrame);
4、控制精灵
可以通过设置锚点和位置、角度、缩放、倾斜来控制精灵的位置和姿态
可以通过设置颜色和透明度来改变精灵的色彩