zoukankan      html  css  js  c++  java
  • 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);
    }
    
    


     

    this->createSpriteInMap(myMap, "jlmPoint", 1, "cat/CatWalks/CatWalks.ExportJson", "CatWalks", 0.5f);


     

  • 相关阅读:
    2018年全国多校算法寒假训练营练习比赛(第二场)F
    牛客练习赛2 A
    牛客练习赛1 C
    牛客练习赛1 B
    vb编程代码大全
    javascript编程代码笔记
    391.FANUC宏程序编程
    宏程序编程实例,简单易懂
    Java类与类之间的关系详细介绍
    C++虚继承时的构造函数的讲解
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/3792425.html
Copyright © 2011-2022 走看看