123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- //
- // spine的加载类
- //
- #ifndef RUQCoreSpine_h
- #define RUQCoreSpine_h
- #include "cocos2d.h"
- #include "editor-support/spine/spine-cocos2dx.h"
- //#include "editor-support/spine/spine.h"
- #include "Redream.h"
- #include "RUDefine.h"
- USING_NS_CC;
- using namespace std;
- //using namespace spine;
- NS_RU_BEGIN
- class QCoreSpine
- :public spine::SkeletonAnimation
- {
- public:
- CREATE_FUNC(QCoreSpine);
-
- static spine::Atlas* getAtlasByName(std::string name);
- static spine::SkeletonData* getSkeletonDataByName(std::string name,spine::Atlas* atlas);
- static QCoreSpine* createWithData (spine::SkeletonData* skeletonData, bool ownsSkeletonData = false);
- static QCoreSpine* createWithJsonFile (const std::string& skeletonJsonFile, spine::Atlas* atlas, float scale = 1);
- static QCoreSpine* createWithJsonFile (const std::string& skeletonJsonFile, const std::string& atlasFile, float scale = 1);
- static QCoreSpine* createWithBinaryFile (const std::string& skeletonBinaryFile, spine::Atlas* atlas, float scale = 1);
- static QCoreSpine* createWithBinaryFile (const std::string& skeletonBinaryFile, const std::string& atlasFile, float scale = 1);
-
- //通过缓存创建spine节点
- static QCoreSpine* createWithBinaryFileAndCache (const std::string& skeletonBinaryFile, const std::string& atlasFile, float scale = 1);
-
- void changeSkeleton(const std::string& skeletonJsonFile, const std::string& atlasFile, float scale = 1);
-
- virtual float getAnimTime(std::string name);
- virtual void playAnim(string name,const std::function<void()> &func = nullptr, bool isDeleteSelf = false ,bool isLoop = false,float delay = 0,bool delFunc = true);
- virtual void playAnimN(string name,const std::function<void(Node*)> &funcN = nullptr, bool isDeleteSelf = false ,bool isLoop = false);
- virtual void playRandomAnim();
- virtual void playAnimInRangeWithArray(std::vector<std::string> randomNames ,std::vector<int> randomRates);
- // 倒序播放
- virtual void playBackAnim(const char* name,const std::function<void()> &func = nullptr, bool isDeleteSelf = false ,bool isLoop = false);
- virtual void playAnimInRange(const char* name = "normal_");
-
- QCoreSpine ();
- ~QCoreSpine();
- virtual void onExit() override;
- //获取动画数据
- spine::SkeletonData* getSkeletonData();
- void setEventCallBack(const std::function<void(spine::TrackEntry*,const char*)> &func);
- void changeToOtherParent(Node* newParent);
- std::function<void(const string&, QCoreSpine*)> setCbOnExit(std::function<void(const string&, QCoreSpine*)> cb);
- string getRunningSequenceName();
- float getAnimDuration(std::string name);
-
- private:
- //重置变量
- void resetVar();
- void setContent();
-
- private:
- void setDataName(const string& name);
- std::function<void(const string&, QCoreSpine*)> _cbOnExit = nullptr;
- string _dataName;
-
- std::function<void()> _mComplete;
- std::function<void()> _mCallFunc;
- std::function<void(Node*)> _mCallFuncN;
- std::function<void(spine::TrackEntry*,const char*)> _mCallEvent;
- std::vector<std::string> _randomNames;
- std::vector<int> _randomRates;
- static void reScaleSkeletonData(spine::SkeletonData* skeletonData,float scale);
- };
- class QCoreSpineLoader : public redream::NodeLoader {
- public:
- RED_STATIC_NEW_AUTORELEASE_OBJECT_METHOD(QCoreSpineLoader, loader);
-
- protected:
- RED_VIRTUAL_NEW_AUTORELEASE_CREATECCNODE_METHOD(QCoreSpine);
-
- virtual void onHandlePropTypeString(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, const char * pString, redream::REDReader * ccbReader);
-
- virtual void onHandlePropTypeFloat(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, float pFloat, redream::REDReader * ccbReader);
-
- virtual void onHandlePropTypeCheck(cocos2d::Node * pNode, cocos2d::Node * pParent, const char* pPropertyName, bool pCheck, redream::REDReader * ccbReader);
-
- void checkRefreshSpine(cocos2d::Node * pNode);
- private:
- std::string _skelName = "";
- std::string _atlasName = "";
- std::string _curAnimName = "";
- float _spineScale = 0.0f;
- bool _loop = false;
- };
- NS_RU_END
- #endif /* defined(RUQCoreSpine_h) */
|