Cocos2dx <基础> 精灵

精灵是Cocos2dx 重要的对象,精灵是一个可以不断变化的图片。这些变化包括: 位置的变化, 旋转,放大,缩小等。

创建精灵的方式:

a. 使用图片创建精灵

    static Sprite* create(const std::string& filename); --------->参数是图片的路径(默认是Rescrous)

    精灵的大小是这个图片的大小.

	auto visibleSize = Director::getInstance()->getVisibleSize();
	//使用图片创建精灵
	auto sprite = Sprite::create("Game/BluePlane.png");
	sprite->setPosition(Vec2(visibleSize.width/2-200,visibleSize.height/2));
	this->addChild(sprite);

b. 使用图片和精灵的矩形范围创建精灵

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

    

	//使用图片和矩形范围创建精灵
	auto sprite2 = Sprite::create("Game/role.png",Rect(0,0,81.25,81.25));
	sprite2->setPosition(Vec2(visibleSize.width / 2+200, visibleSize.height / 2));
	this->addChild(sprite2);
注意: Rect(起点的x,起点的y,小图片的宽,小图片的高),以图片的右上角为原点计算的。

c. 使用2D纹理创建精灵

    static Sprite* createWithTexture(Texture2D *texture);

	//使用2D纹理创建精灵
	auto texTure2d = TextureCache::getInstance()->addImage("Game/XPlane.png");
	auto sprite3 = Sprite::createWithTexture(texTure2d);
	sprite3->setPosition(Vec2(visibleSize.width / 2 + 400, visibleSize.height / 2));
	this->addChild(sprite3);

d. 使用2D纹理和矩形范围创建精灵

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

	//使用2D纹理和矩形范围创建精灵
	auto texTure2ds = TextureCache::getInstance()->addImage("Game/role.png");
	auto sprite4 = Sprite::createWithTexture(texTure2ds,Rect(0, 0, 81.25, 81.25));
	sprite4->setPosition(Vec2(visibleSize.width / 2 -400, visibleSize.height / 2));
	this->addChild(sprite4);

----------------------------------------创建精灵帧的方式:

a.   static SpriteFrame* createWithTexture(Texture2D* pobTexture, const Rect& rect);

b.   static SpriteFrame* create(const std::string& filename, const Rect& rect, bool rotated, const Vec2& offset, const Size& originalSize);

c.   static SpriteFrame* createWithTexture(Texture2D* pobTexture, const Rect& rect);

d.  static SpriteFrame* createWithTexture(Texture2D* pobTexture, const Rect& rect, bool rotated, const Vec2& offset, const Size& originalSize);

参数:  rotated: 是否旋转 ;   offset: 偏移的位置   originalSize: 初始大小为一个指定的原始大小(可设为size:;zero)。

-----------------------------------------

e. 使用精灵帧创建纹理(精灵帧就是plist文件中的一个图片)

     static Sprite* createWithSpriteFrame(SpriteFrame *spriteFrame);

	auto spriteFrame = SpriteFrame::create("Game/role.png", Rect(0, 0, 81.25, 81.25),false,Vec2(0,0),Size(0,0));
	auto sprite6 = Sprite::createWithSpriteFrame(spriteFrame);
	sprite6->setPosition(Vec2(visibleSize.width / 2 - 200, visibleSize.height / 2 + 200));
	this->addChild(sprite6);
f. 使用精灵帧名字创建精灵(游戏项目中经常用到的)

	//使用精灵帧名字创建精灵    static Sprite* createWithSpriteFrameName(const std::string& spriteFrameName);
	SpriteFrameCache::getInstance()->addSpriteFramesWithFile("Fei.plist");
	auto sprite7 = Sprite::createWithSpriteFrameName("XPlane.png");
	sprite7->setPosition(Vec2(visibleSize.width / 2 , visibleSize.height / 2 + 200));
	this->addChild(sprite7);

--------------------------------------------------------------------------------------

<SpriteBatchNode>---->批量创建精灵

好处: 减少opengl指令,优化游戏性能。

Cocos2dx 使用openlgl es绘制图片,每次绘制图片的时候是open---draw---close流程。但是SpriteBatchNode把所有的精灵一起绘制,绘制的时候就是open----draw----draw----

close。

	auto visibleSize = Director::getInstance()->getVisibleSize();
	// static SpriteBatchNode* create(const std::string& fileImage, ssize_t capacity = DEFAULT_CAPACITY);
	auto spriteNode = SpriteBatchNode::create("Game/Fei.pvr.ccz",10);//---->10代表的是这个Node容器中,有10个精灵
	this->addChild(spriteNode);
	//使用精灵帧名创建精灵
	auto sprite1 = Sprite::createWithSpriteFrameName("BluePlane.png");
	sprite1->setPosition(Vec2(visibleSize.width/2,visibleSize.height/2));
	spriteNode->addChild(sprite1);
	auto sprite2 = Sprite::createWithSpriteFrameName("XPlane.png");
	sprite2->setPosition(Vec2(visibleSize.width /2-200, visibleSize.height / 2));
	spriteNode->addChild(sprite2);




猜你喜欢

转载自blog.csdn.net/wue1206/article/details/80193922
今日推荐