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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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章 精灵的主要内容,如果未能解决你的问题,请参考以下文章

cocos2d-x实战 C++卷 学习笔记--第4章 使用菜单

cocos2d-x实战 C++卷 学习笔记--第7章 动作特效

cocos2d-x实战 C++卷 学习笔记--第6章 场景与层

《Cocos2d-x实战:C++》学习笔记——基础概念

《Cocos2d-x实战:C++》学习笔记——基础概念

《Cocos2d-x游戏开发实战精解》学习笔记1--在Cocos2d中显示图像