cocos3.0使用cocostudio动画帧结合地图键值创建精灵

#include "cocos2d.h"
#include "cocostudio/CocoStudio.h"
//精灵猫和其他精灵的tag
typedef  enum{
	  catTag =1,
};

//cocostudio 动画帧tag
typedef  enum{

	catWalkTag = 1001,
};


class Base :public  cocos2d::Layer
{
public:
	Base();
	~Base();

	//在地图中创建一个活多个空精灵节点
	void createSpriteInMap(cocos2d::TMXTiledMap* map, const std::string& strObj,int _tag, const  std::string&  strJosn, const std::string&  _index, float scale);
	
   //创建精灵的动画
	cocostudio::Armature*  createArmature(const  std::string&  strJosn, const std::string&  _index, float scale);

	//移除动画
	void removeArmature(int _tag1,int _tag2);
	
};

 

#include "Base.h"
USING_NS_CC;
using  namespace cocostudio;
Base::Base()
{
}


Base::~Base()
{
}

void  Base::createSpriteInMap(TMXTiledMap* map, const std::string& strObj,int _tag, const  std::string&  strJosn, const std::string&  _index, float scale)
{
	auto  group  =map->getObjectGroup(strObj);
	auto& objs   = group->getObjects();
	for (auto& obj : objs)
	{
		ValueMap& dict =obj.asValueMap();
		float x =dict["x"].asFloat();
		float y =dict["y"].asFloat();
	    auto  sprite = Sprite::create();
		sprite->setPosition(Point(x,y));
		ArmatureDataManager::getInstance()->addArmatureFileInfo(strJosn);
		Armature *armature = Armature::create(_index);
		armature->getAnimation()->playWithIndex(0);
		armature->setScale(scale);
		switch (_tag)
		{
		  case  catTag:
			  sprite->addChild(armature, 2, catWalkTag);
			  this->addChild(sprite, 2,catTag);
		}
	}

}

cocostudio::Armature*  Base::createArmature(const  std::string&  strJosn, const std::string&  _index, float scale)
{
	ArmatureDataManager::getInstance()->addArmatureFileInfo(strJosn);
	Armature *armature = Armature::create(_index);
	armature->getAnimation()->playWithIndex(0);
	armature->setScale(scale);
	return armature;
}



void Base::removeArmature(int _tag1,int _tag2)
{
	auto sprite =this->getChildByTag(_tag1);
	sprite->removeChildByTag(_tag2);
}


 

#include "Base.h"
USING_NS_CC;
using  namespace cocostudio;
Base::Base()
{
}


Base::~Base()
{
}

void  Base::createSpriteInMap(TMXTiledMap* map, const std::string& strObj,int _tag, const  std::string&  strJosn, const std::string&  _index, float scale)
{
	auto  group  =map->getObjectGroup(strObj);
	auto& objs   = group->getObjects();
	for (auto& obj : objs)
	{
		ValueMap& dict =obj.asValueMap();
		float x =dict["x"].asFloat();
		float y =dict["y"].asFloat();
	    auto  sprite = Sprite::create();
		sprite->setPosition(Point(x,y));
		ArmatureDataManager::getInstance()->addArmatureFileInfo(strJosn);
		Armature *armature = Armature::create(_index);
		armature->getAnimation()->playWithIndex(0);
		armature->setScale(scale);
		switch (_tag)
		{
		  case  catTag:
			  sprite->addChild(armature, 2, catWalkTag);
			  this->addChild(sprite, 2,catTag);
		}
	}

}

cocostudio::Armature*  Base::createArmature(const  std::string&  strJosn, const std::string&  _index, float scale)
{
	ArmatureDataManager::getInstance()->addArmatureFileInfo(strJosn);
	Armature *armature = Armature::create(_index);
	armature->getAnimation()->playWithIndex(0);
	armature->setScale(scale);
	return armature;
}



void Base::removeArmature(int _tag1,int _tag2)
{
	auto sprite =this->getChildByTag(_tag1);
	sprite->removeChildByTag(_tag2);
}


 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值