diff --git a/spine-cocos2dx/3/src/spine/SkeletonAnimation.cpp b/spine-cocos2dx/3/src/spine/SkeletonAnimation.cpp index 66d64a6ed..bdaccddd4 100644 --- a/spine-cocos2dx/3/src/spine/SkeletonAnimation.cpp +++ b/spine-cocos2dx/3/src/spine/SkeletonAnimation.cpp @@ -100,7 +100,6 @@ void SkeletonAnimation::initialize () { SkeletonAnimation::SkeletonAnimation () : SkeletonRenderer() { - initialize(); } SkeletonAnimation::SkeletonAnimation (spSkeletonData *skeletonData) 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..b1d4b6c3b 100644 --- a/spine-cocos2dx/3/src/spine/SkeletonRenderer.cpp +++ b/spine-cocos2dx/3/src/spine/SkeletonRenderer.cpp @@ -83,18 +83,35 @@ void SkeletonRenderer::setSkeletonData (spSkeletonData *skeletonData, bool ownsS } SkeletonRenderer::SkeletonRenderer () { - initialize(); } SkeletonRenderer::SkeletonRenderer (spSkeletonData *skeletonData, bool ownsSkeletonData) { - initialize(); - - setSkeletonData(skeletonData, ownsSkeletonData); + initWithData(skeletonData, ownsSkeletonData); } SkeletonRenderer::SkeletonRenderer (const std::string& skeletonDataFile, spAtlas* atlas, float scale) { - initialize(); + 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) { + setSkeletonData(skeletonData, ownsSkeletonData); + + initialize(); +} + +void SkeletonRenderer::initWithFile (const std::string& skeletonDataFile, spAtlas* atlas, float scale) { spSkeletonJson* json = spSkeletonJson_create(atlas); json->scale = scale; spSkeletonData* skeletonData = spSkeletonJson_readSkeletonDataFile(json, skeletonDataFile.c_str()); @@ -102,11 +119,11 @@ SkeletonRenderer::SkeletonRenderer (const std::string& skeletonDataFile, spAtlas spSkeletonJson_dispose(json); setSkeletonData(skeletonData, true); + + initialize(); } -SkeletonRenderer::SkeletonRenderer (const std::string& skeletonDataFile, const std::string& atlasFile, float scale) { - initialize(); - +void SkeletonRenderer::initWithFile (const std::string& skeletonDataFile, const std::string& atlasFile, float scale) { _atlas = spAtlas_createFromFile(atlasFile.c_str(), 0); CCASSERT(_atlas, "Error reading atlas file."); @@ -117,15 +134,10 @@ SkeletonRenderer::SkeletonRenderer (const std::string& skeletonDataFile, const s spSkeletonJson_dispose(json); setSkeletonData(skeletonData, true); + + initialize(); } -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;