diff --git a/spine-cocos2dx/3/src/spine/SkeletonAnimation.h b/spine-cocos2dx/3/src/spine/SkeletonAnimation.h index b9a37e0d1..2456bd32e 100644 --- a/spine-cocos2dx/3/src/spine/SkeletonAnimation.h +++ b/spine-cocos2dx/3/src/spine/SkeletonAnimation.h @@ -76,7 +76,7 @@ public: spAnimationState* getState() const; -protected: +CC_CONSTRUCTOR_ACCESS: SkeletonAnimation (); SkeletonAnimation (spSkeletonData* skeletonData); SkeletonAnimation (const std::string&skeletonDataFile, spAtlas* atlas, float scale = 1); @@ -84,6 +84,7 @@ protected: virtual ~SkeletonAnimation (); void initialize (); +protected: spAnimationState* _state; bool _ownsAnimationStateData; diff --git a/spine-cocos2dx/3/src/spine/SkeletonRenderer.cpp b/spine-cocos2dx/3/src/spine/SkeletonRenderer.cpp index 0c0083eb2..a11df22d4 100644 --- a/spine-cocos2dx/3/src/spine/SkeletonRenderer.cpp +++ b/spine-cocos2dx/3/src/spine/SkeletonRenderer.cpp @@ -87,12 +87,32 @@ SkeletonRenderer::SkeletonRenderer () { } SkeletonRenderer::SkeletonRenderer (spSkeletonData *skeletonData, bool ownsSkeletonData) { + initWithData(skeletonData, ownsSkeletonData); +} + +SkeletonRenderer::SkeletonRenderer (const std::string& skeletonDataFile, spAtlas* atlas, float scale) { + initWithFile(skeletonDataFile, atlas, scale); +} + +SkeletonRenderer::SkeletonRenderer (const std::string& skeletonDataFile, const std::string& atlasFile, float scale) { + initWithFile(skeletonDataFile, atlasFile, scale); +} + +SkeletonRenderer::~SkeletonRenderer () { + if (_ownsSkeletonData) spSkeletonData_dispose(_skeleton->data); + if (_atlas) spAtlas_dispose(_atlas); + spSkeleton_dispose(_skeleton); + _batch->release(); + FREE(_worldVertices); +} + +void SkeletonRenderer::initWithData (spSkeletonData* skeletonData, bool ownsSkeletonData = false) { initialize(); setSkeletonData(skeletonData, ownsSkeletonData); } -SkeletonRenderer::SkeletonRenderer (const std::string& skeletonDataFile, spAtlas* atlas, float scale) { +void SkeletonRenderer::initWithFile (const std::string& skeletonDataFile, spAtlas* atlas, float scale = 1) { initialize(); spSkeletonJson* json = spSkeletonJson_create(atlas); @@ -104,7 +124,7 @@ SkeletonRenderer::SkeletonRenderer (const std::string& skeletonDataFile, spAtlas setSkeletonData(skeletonData, true); } -SkeletonRenderer::SkeletonRenderer (const std::string& skeletonDataFile, const std::string& atlasFile, float scale) { +void SkeletonRenderer::initWithFile (const std::string& skeletonDataFile, const std::string& atlasFile, float scale = 1) { initialize(); _atlas = spAtlas_createFromFile(atlasFile.c_str(), 0); @@ -119,13 +139,6 @@ SkeletonRenderer::SkeletonRenderer (const std::string& skeletonDataFile, const s setSkeletonData(skeletonData, true); } -SkeletonRenderer::~SkeletonRenderer () { - if (_ownsSkeletonData) spSkeletonData_dispose(_skeleton->data); - if (_atlas) spAtlas_dispose(_atlas); - spSkeleton_dispose(_skeleton); - _batch->release(); - FREE(_worldVertices); -} void SkeletonRenderer::update (float deltaTime) { spSkeleton_update(_skeleton, deltaTime * _timeScale); diff --git a/spine-cocos2dx/3/src/spine/SkeletonRenderer.h b/spine-cocos2dx/3/src/spine/SkeletonRenderer.h index 575203746..6cabc4ca9 100644 --- a/spine-cocos2dx/3/src/spine/SkeletonRenderer.h +++ b/spine-cocos2dx/3/src/spine/SkeletonRenderer.h @@ -91,14 +91,21 @@ public: virtual void setOpacityModifyRGB (bool value); virtual bool isOpacityModifyRGB () const; -protected: +CC_CONSTRUCTOR_ACCESS: SkeletonRenderer (); SkeletonRenderer (spSkeletonData* skeletonData, bool ownsSkeletonData = false); SkeletonRenderer (const std::string& skeletonDataFile, spAtlas* atlas, float scale = 1); SkeletonRenderer (const std::string& skeletonDataFile, const std::string& atlasFile, float scale = 1); + virtual ~SkeletonRenderer (); + + void initWithData (spSkeletonData* skeletonData, bool ownsSkeletonData = false); + void initWithFile (const std::string& skeletonDataFile, spAtlas* atlas, float scale = 1); + void initWithFile (const std::string& skeletonDataFile, const std::string& atlasFile, float scale = 1); + void initialize (); +protected: void setSkeletonData (spSkeletonData* skeletonData, bool ownsSkeletonData); virtual cocos2d::Texture2D* getTexture (spRegionAttachment* attachment) const; virtual cocos2d::Texture2D* getTexture (spMeshAttachment* attachment) const;