欢迎使用CSDN-markdown编辑器

来源:互联网 发布:农村淘宝申请报名网址 编辑:程序博客网 时间:2024/06/05 18:20

cococ2d-x成长记录贴2–精灵

今天看了精灵这一章,先从类的继承来说吧。
Sprite精灵类继承自Node和TextureProtocol,它的子类有PhysicsSprite物理引擎精灵类和Skin皮肤精灵类。
创建精灵的方式有很多种,下面几种是比较常用的:
static Sprite *create()//创建一个精灵对象,纹理属性等在创建后设置。
static Sprite *create(const std::string &filename).//指定图片创建精灵。
static Sprite *create(const std::string&filename,const Rect&rect).//指定图片和裁剪的矩形区域来创建精灵。
static Sprite *createWithTexture(Texture2D *texture)//指定纹理创建精灵。
static Sprite *createWithTexture(Texture2D *texture, const Rect &rect,bool rotated=false).指定纹理和裁剪的矩形区域来创建精灵,第三个参数为是否旋转纹理,默认不旋转。
精灵的优化可以使用精灵表 和缓存。
精灵表也成为纹理图集,是把许多小的精灵图片组合到一张大图里面。其优点如下:
1:减少文件读取次数
2:减少OpenGL ES绘制调用并且加速渲染。
3:减少内存消耗
4:Cocos2d-x全面支持Zwoptex和TexturePacker,所以创建和使用纹理图集是很容易的。

缓存有如下几种,精灵帧缓存是其中的一种:
1:纹理缓存,使用纹理缓存可以创建纹理对象。
2:精灵帧缓存:能够从精灵表中创建精灵帧缓存,然后再从精灵帧缓存中获得精灵对象,反复使用精灵对象时,使用精灵帧缓存可以节省内存消耗。
3:动画缓存。动画缓存主要用于精灵动画,精灵动画中的每一帧是从动画缓存中获取的。
使用精灵帧缓存的例子:
SpriteFrameCache *frameCache = SpriteFrameCache::getInstance();
frameCache->addSpriteFrameWithFile(“SpriteSheet.plist”);

auto mouitain1 = Sprite::createWithSpriteFrame(“moutain1.png”)//图片的路径为.plist坐标文件中定义的精灵帧名
mountain->setAnchorPoint(Vec::ZERO);
mountain->setPosition(Vec(-200,80));
this->addChild(mountain1,0);

0 0
原创粉丝点击