// // SkeletonAnimationLoader.cpp // cocos2d_libs // // Created by zhuangyou on 2020/4/2. // #include "CCSkeletonAnimationLoader.h" using namespace cocos2d; #define PROPERTY_DATAFILE "dataFile" #define PROPERTY_ATLASFILE "atlasFile" #define PROPERTY_SKELFRAME "frame" #define PROPERTY_AUTOPLAY "autoPlay" #define PROPERTY_DEBUG_BONES "debugBones" #define PROPERTY_DEBUG_SLOTS "debugSlots" #define PROPERTY_DEBUG_BOUNDING_RECT "debugBoundingRect" namespace redream { void SkeletonAnimationLoader::onHandlePropTypeSpineSkel(Node * pNode, Node * pParent, const char * pPropertyName, const char* pSkel, REDReader * ccbReader) { if(strcmp(pPropertyName, PROPERTY_DATAFILE) == 0) { if(pSkel != nullptr) { spine::SkeletonAnimation* skeNode = ((spine::SkeletonAnimation*)pNode); skeNode->setDataFile(pSkel); } else { CCLOG("ERROR: pSkel nullptr"); } } else { NodeLoader::onHandlePropTypeSpineSkel(pNode, pParent, pPropertyName, pSkel, ccbReader); } } void SkeletonAnimationLoader::onHandlePropTypeSpineAtlas(Node * pNode, Node * pParent, const char * pPropertyName, const char* pAtlas, REDReader * ccbReader) { if(strcmp(pPropertyName, PROPERTY_ATLASFILE) == 0) { if(pAtlas != nullptr) { spine::SkeletonAnimation* skeNode = ((spine::SkeletonAnimation*)pNode); skeNode->setAtlasFile(pAtlas); } else { CCLOG("ERROR: pAtlas nullptr"); } } else { NodeLoader::onHandlePropTypeSpineAtlas(pNode, pParent, pPropertyName, pAtlas, ccbReader); } } void SkeletonAnimationLoader::onHandlePropTypeSkelFrame(Node * pNode, Node * pParent, const char * pPropertyName, spine::SkeletonFrame pFrame, REDReader * ccbReader) { if(strcmp(pPropertyName, PROPERTY_SKELFRAME) == 0) { // 动画初始化只会是空节点,不播放动画,所有的动画都在关键帧处理 // ((spine::SkeletonAnimation*)pNode)->setEmptyAnimations(0); // TODO // ((spine::SkeletonAnimation*)pNode)->update(0);if (!(.empty()) { } else { NodeLoader::onHandlePropTypeSkelFrame(pNode, pParent, pPropertyName, pFrame, ccbReader); } } void SkeletonAnimationLoader::onHandlePropTypeCheck(Node * pNode, Node * pParent, const char * pPropertyName, bool pCheck, REDReader * ccbReader) { if(strcmp(pPropertyName, PROPERTY_AUTOPLAY) == 0 || strcmp(pPropertyName, PROPERTY_DEBUG_BONES) == 0 || strcmp(pPropertyName, PROPERTY_DEBUG_SLOTS) == 0 || strcmp(pPropertyName, PROPERTY_DEBUG_BOUNDING_RECT) == 0 ) { // 有很多属性不需要使用在这个地方处理一下 }else { NodeLoader::onHandlePropTypeCheck(pNode, pParent, pPropertyName, pCheck, ccbReader); } } }