CCSkeletonAnimationLoader.cpp 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. //
  2. // SkeletonAnimationLoader.cpp
  3. // cocos2d_libs
  4. //
  5. // Created by zhuangyou on 2020/4/2.
  6. //
  7. #include "CCSkeletonAnimationLoader.h"
  8. using namespace cocos2d;
  9. #define PROPERTY_DATAFILE "dataFile"
  10. #define PROPERTY_ATLASFILE "atlasFile"
  11. #define PROPERTY_SKELFRAME "frame"
  12. #define PROPERTY_AUTOPLAY "autoPlay"
  13. #define PROPERTY_DEBUG_BONES "debugBones"
  14. #define PROPERTY_DEBUG_SLOTS "debugSlots"
  15. #define PROPERTY_DEBUG_BOUNDING_RECT "debugBoundingRect"
  16. namespace redream {
  17. void SkeletonAnimationLoader::onHandlePropTypeSpineSkel(Node * pNode, Node * pParent, const char * pPropertyName, const char* pSkel, REDReader * ccbReader) {
  18. if(strcmp(pPropertyName, PROPERTY_DATAFILE) == 0) {
  19. if(pSkel != nullptr) {
  20. spine::SkeletonAnimation* skeNode = ((spine::SkeletonAnimation*)pNode);
  21. skeNode->setDataFile(pSkel);
  22. } else {
  23. CCLOG("ERROR: pSkel nullptr");
  24. }
  25. } else {
  26. NodeLoader::onHandlePropTypeSpineSkel(pNode, pParent, pPropertyName, pSkel, ccbReader);
  27. }
  28. }
  29. void SkeletonAnimationLoader::onHandlePropTypeSpineAtlas(Node * pNode, Node * pParent, const char * pPropertyName, const char* pAtlas, REDReader * ccbReader) {
  30. if(strcmp(pPropertyName, PROPERTY_ATLASFILE) == 0) {
  31. if(pAtlas != nullptr) {
  32. spine::SkeletonAnimation* skeNode = ((spine::SkeletonAnimation*)pNode);
  33. skeNode->setAtlasFile(pAtlas);
  34. } else {
  35. CCLOG("ERROR: pAtlas nullptr");
  36. }
  37. } else {
  38. NodeLoader::onHandlePropTypeSpineAtlas(pNode, pParent, pPropertyName, pAtlas, ccbReader);
  39. }
  40. }
  41. void SkeletonAnimationLoader::onHandlePropTypeSkelFrame(Node * pNode, Node * pParent, const char * pPropertyName, spine::SkeletonFrame pFrame, REDReader * ccbReader) {
  42. if(strcmp(pPropertyName, PROPERTY_SKELFRAME) == 0) {
  43. // 动画初始化只会是空节点,不播放动画,所有的动画都在关键帧处理
  44. // ((spine::SkeletonAnimation*)pNode)->setEmptyAnimations(0); // TODO
  45. // ((spine::SkeletonAnimation*)pNode)->update(0);if (!(.empty()) {
  46. } else {
  47. NodeLoader::onHandlePropTypeSkelFrame(pNode, pParent, pPropertyName, pFrame, ccbReader);
  48. }
  49. }
  50. void SkeletonAnimationLoader::onHandlePropTypeCheck(Node * pNode, Node * pParent, const char * pPropertyName, bool pCheck, REDReader * ccbReader) {
  51. if(strcmp(pPropertyName, PROPERTY_AUTOPLAY) == 0
  52. || strcmp(pPropertyName, PROPERTY_DEBUG_BONES) == 0
  53. || strcmp(pPropertyName, PROPERTY_DEBUG_SLOTS) == 0
  54. || strcmp(pPropertyName, PROPERTY_DEBUG_BOUNDING_RECT) == 0
  55. ) {
  56. // 有很多属性不需要使用在这个地方处理一下
  57. }else {
  58. NodeLoader::onHandlePropTypeCheck(pNode, pParent, pPropertyName, pCheck, ccbReader);
  59. }
  60. }
  61. }