前言:
精灵类是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是纹理图片名。
时间: 2024-10-13 08:13:01