首页 > 代码库 > cocos2d-x实战 C++卷 学习笔记--第5章 精灵

cocos2d-x实战 C++卷 学习笔记--第5章 精灵

前言:

精灵类是Sprite类。它的子类有PhysicsSprite 和 Skin。

PhysicsSprite 是物理引擎精灵类,而Skin是皮肤精灵类,用于骨骼动画。

创建Sprite精灵对象

创建精灵对象有多种方式,常用的函数如下:

1)创建一个精灵对象,纹理等属性需要在创建后设置

static  Sprite*  create();

2)指定图片创建精灵

static  Sprite*  create(const  std::string&  filename);

3)指定图片和裁剪的矩形区域来创建精灵

static  Sprite*  create(const  std::string&  filename,  const  Rect&  rect);

4)指定纹理创建精灵

static  Sprite*  createWithTexture(Texture2D*  texture);

5)指定纹理和裁剪的矩形区域来创建精灵,第3个参数指定是否旋转纹理,默认不旋转

static  Sprite*  createWithTexture(Texture2D*  texture, const  Rect&  rect,  bool  rotated = false);

6)通过一个精灵帧对象创建另一个精灵对象

static  Sprite*  createWithSpriteFrame(SpriteFrame*  pSpriteFrame);

7)通过指定帧缓存中精灵帧名 创建 精灵对象

static  Sprite*  createWithSpriteFrameName(cosnt  std::string & spriteFrameName);  

代码示例:

 1    auto spbk = Sprite::create("background.png"); 2     //// 此处没有设置position,默认的位置是 左下角  3     //spbk->setPosition(Point(origin.x + visibleSize.width / 2, origin.y + visibleSize.height / 2)); 4     spbk->setAnchorPoint(Point::ZERO); 5     this->addChild(spbk, 0); 6  7     //// 使用 纹理对象(Texture2D) 创建Sprite对象. 8     ///  Rect(float x, float y, float width, float height); 9     // 参数rect是 tree1.png图片中,UI坐标系下,(604,38)坐标位置,宽302,高295的一个区域10     auto tree1 = Sprite::create("tree1.png", Rect(604, 38, 302, 295));11     tree1->setPosition(Point(200, 230));12     this->addChild(tree1, 0);13 14     Texture2D* cache = Director::getInstance()->getTextureCache()->addImage("tree1.png");15     auto tree2 = Sprite::create();16     tree2->setTexture(cache);17     // 参数rect是 tree1.png图片中,UI坐标系下,(73,72)坐标位置,宽182,高270的一个区域18     tree2->setTextureRect(Rect(73, 72, 182, 270));19     tree2->setPosition(Point(500, 200));20     this->addChild(tree2, 0);

通过 Director::getInstance()->getTextureCache() 函数可以获得 TextureCache 实例,TextureCache 的 addImage("tree1.png")函数可以创建纹理Texture2D对象,其中的tree1.png是纹理图片名。

 

cocos2d-x实战 C++卷 学习笔记--第5章 精灵