瀏覽代碼

support multiple-resolutions

Stefan Nguyen 12 年之前
父節點
當前提交
510849c609
共有 43 個文件被更改,包括 1163 次插入133 次删除
  1. 70 15
      spine-cocos2dx/example/Classes/AppDelegate.cpp
  2. 32 10
      spine-cocos2dx/example/Classes/AppDelegate.h
  3. 8 4
      spine-cocos2dx/example/Classes/AppMacros.h
  4. 3 3
      spine-cocos2dx/example/Classes/ExampleScene.cpp
  5. 204 0
      spine-cocos2dx/example/Resources/common/spineboy-bow.json
  6. 372 0
      spine-cocos2dx/example/Resources/common/spineboy-jump.json
  7. 13 10
      spine-cocos2dx/example/Resources/common/spineboy-skeleton.json
  8. 0 0
      spine-cocos2dx/example/Resources/common/spineboy-walk.json
  9. 二進制
      spine-cocos2dx/example/Resources/data/spineboy.png
  10. 二進制
      spine-cocos2dx/example/Resources/iphone-retina/spineboy.png
  11. 93 87
      spine-cocos2dx/example/Resources/iphone-retina/spineboy.txt
  12. 二進制
      spine-cocos2dx/example/Resources/iphone/spineboy.png
  13. 172 0
      spine-cocos2dx/example/Resources/iphone/spineboy.txt
  14. 12 4
      spine-cocos2dx/example/proj.ios/ExampleSpine.xcodeproj/project.pbxproj
  15. 二進制
      spine-cocos2dx/example/proj.ios/ExampleSpine.xcodeproj/project.xcworkspace/xcuserdata/pancake.xcuserdatad/UserInterfaceState.xcuserstate
  16. 5 0
      spine-cocos2dx/example/proj.ios/ExampleSpine.xcodeproj/xcuserdata/pancake.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist
  17. 二進制
      spine-cocos2dx/example/raw/images/bow.png
  18. 二進制
      spine-cocos2dx/example/raw/images/eyes-closed.png
  19. 二進制
      spine-cocos2dx/example/raw/images/eyes.png
  20. 二進制
      spine-cocos2dx/example/raw/images/head.png
  21. 二進制
      spine-cocos2dx/example/raw/images/left-ankle.png
  22. 二進制
      spine-cocos2dx/example/raw/images/left-arm.png
  23. 二進制
      spine-cocos2dx/example/raw/images/left-foot.png
  24. 二進制
      spine-cocos2dx/example/raw/images/left-hand.png
  25. 二進制
      spine-cocos2dx/example/raw/images/left-lower-leg.png
  26. 二進制
      spine-cocos2dx/example/raw/images/left-pant-bottom.png
  27. 二進制
      spine-cocos2dx/example/raw/images/left-shoulder.png
  28. 二進制
      spine-cocos2dx/example/raw/images/left-upper-leg.png
  29. 二進制
      spine-cocos2dx/example/raw/images/neck.png
  30. 8 0
      spine-cocos2dx/example/raw/images/pack.json
  31. 二進制
      spine-cocos2dx/example/raw/images/pelvis.png
  32. 二進制
      spine-cocos2dx/example/raw/images/right-ankle.png
  33. 二進制
      spine-cocos2dx/example/raw/images/right-arm.png
  34. 二進制
      spine-cocos2dx/example/raw/images/right-foot-idle.png
  35. 二進制
      spine-cocos2dx/example/raw/images/right-foot.png
  36. 二進制
      spine-cocos2dx/example/raw/images/right-hand.png
  37. 二進制
      spine-cocos2dx/example/raw/images/right-lower-leg.png
  38. 二進制
      spine-cocos2dx/example/raw/images/right-pant-bottom.png
  39. 二進制
      spine-cocos2dx/example/raw/images/right-shoulder.png
  40. 二進制
      spine-cocos2dx/example/raw/images/right-upper-leg.png
  41. 二進制
      spine-cocos2dx/example/raw/images/torso.png
  42. 二進制
      spine-cocos2dx/example/raw/spineboy.project
  43. 171 0
      spine-cocos2dx/example/raw/spineboy.tps

+ 70 - 15
spine-cocos2dx/example/Classes/AppDelegate.cpp

@@ -4,36 +4,91 @@
 #include <string>
 
 #include "ExampleScene.h"
+#include "AppMacros.h"
 
 USING_NS_CC;
 using namespace std;
 
 AppDelegate::AppDelegate() {
+  
 }
 
-AppDelegate::~AppDelegate() {
+AppDelegate::~AppDelegate()
+{
 }
 
 bool AppDelegate::applicationDidFinishLaunching() {
-	CCDirector* director = CCDirector::sharedDirector();
+  // initialize director
+  CCDirector* pDirector = CCDirector::sharedDirector();
+  CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();
+  
+  pDirector->setOpenGLView(pEGLView);
+  
+  // Set the design resolution
+  pEGLView->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, kResolutionNoBorder);
+  
+	CCSize frameSize = pEGLView->getFrameSize();
+  
+  vector<string> searchPath;
+  
+  // In this demo, we select resource according to the frame's height.
+  // If the resource size is different from design resolution size, you need to set contentScaleFactor.
+  // We use the ratio of resource's height to the height of design resolution,
+  // this can make sure that the resource's height could fit for the height of design resolution.
+  
+  // if the frame's height is larger than the height of medium resource size, select large resource.
+	if (frameSize.height > mediumResource.size.height)
+	{
+    searchPath.push_back(largeResource.directory);
+    
+    pDirector->setContentScaleFactor(MIN(largeResource.size.height/designResolutionSize.height, largeResource.size.width/designResolutionSize.width));
+	}
+  // if the frame's height is larger than the height of small resource size, select medium resource.
+  else if (frameSize.height > smallResource.size.height)
+  {
+    searchPath.push_back(mediumResource.directory);
+    
+    pDirector->setContentScaleFactor(MIN(mediumResource.size.height/designResolutionSize.height, mediumResource.size.width/designResolutionSize.width));
+  }
+  // if the frame's height is smaller than the height of medium resource size, select small resource.
+	else
+  {
+    searchPath.push_back(smallResource.directory);
+    
+    pDirector->setContentScaleFactor(MIN(smallResource.size.height/designResolutionSize.height, smallResource.size.width/designResolutionSize.width));
+  }
+  
+  searchPath.push_back("common");
+  // set searching path
+  CCFileUtils::sharedFileUtils()->setSearchPaths(searchPath);
 	
-	CCEGLView* view = CCEGLView::sharedOpenGLView();
-	director->setOpenGLView(view);
-	view->setViewName("Spine Example");
-	view->setFrameSize(640, 480);
-	view->setDesignResolutionSize(640, 480, kResolutionNoBorder);
-
-	director->setDisplayStats(true);
-	director->runWithScene(ExampleScene::scene());
-	return true;
+  // turn on display FPS
+  pDirector->setDisplayStats(true);
+  
+  // set FPS. the default value is 1.0/60 if you don't call this
+  pDirector->setAnimationInterval(1.0 / 60);
+  
+  // create a scene. it's an autorelease object
+  CCScene *pScene = ExampleScene::scene();
+  
+  // run
+  pDirector->runWithScene(pScene);
+  
+  return true;
 }
 
+// This function will be called when the app is inactive. When comes a phone call,it's be invoked too
 void AppDelegate::applicationDidEnterBackground() {
-	CCDirector::sharedDirector()->stopAnimation();
-	// SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
+  CCDirector::sharedDirector()->stopAnimation();
+  
+  // if you use SimpleAudioEngine, it must be pause
+  // SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
 }
 
+// this function will be called when the app is active again
 void AppDelegate::applicationWillEnterForeground() {
-	CCDirector::sharedDirector()->startAnimation();
-	// SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
+  CCDirector::sharedDirector()->startAnimation();
+  
+  // if you use SimpleAudioEngine, it must resume here
+  // SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
 }

+ 32 - 10
spine-cocos2dx/example/Classes/AppDelegate.h

@@ -1,16 +1,38 @@
-#ifndef _APPDELEGATE_H_
-#define _APPDELEGATE_H_
+#ifndef  _APP_DELEGATE_H_
+#define  _APP_DELEGATE_H_
 
 #include "cocos2d.h"
 
-class  AppDelegate : private cocos2d::CCApplication {
+/**
+ @brief    The cocos2d Application.
+ 
+ The reason for implement as private inheritance is to hide some interface call by CCDirector.
+ */
+class  AppDelegate : private cocos2d::CCApplication
+{
 public:
-	AppDelegate();
-	virtual ~AppDelegate();
-
-	virtual bool applicationDidFinishLaunching();
-	virtual void applicationDidEnterBackground();
-	virtual void applicationWillEnterForeground();
+  AppDelegate();
+  virtual ~AppDelegate();
+  
+  /**
+   @brief    Implement CCDirector and CCScene init code here.
+   @return true    Initialize success, app continue.
+   @return false   Initialize failed, app terminate.
+   */
+  virtual bool applicationDidFinishLaunching();
+  
+  /**
+   @brief  The function be called when the application enter background
+   @param  the pointer of the application
+   */
+  virtual void applicationDidEnterBackground();
+  
+  /**
+   @brief  The function be called when the application enter foreground
+   @param  the pointer of the application
+   */
+  virtual void applicationWillEnterForeground();
 };
 
-#endif // _APPDELEGATE_H_
+#endif // _APP_DELEGATE_H_
+

+ 8 - 4
spine-cocos2dx/example/Classes/AppMacros.h

@@ -24,8 +24,9 @@
  */
 
 #define DESIGN_RESOLUTION_480X320    0
-#define DESIGN_RESOLUTION_1024X768   1
-#define DESIGN_RESOLUTION_2048X1536  2
+#define DESIGN_RESOLUTION_960x640    1
+#define DESIGN_RESOLUTION_1024X768   2
+#define DESIGN_RESOLUTION_2048X1536  3
 
 /* If you want to switch design resolution, change next line */
 #define TARGET_DESIGN_RESOLUTION_SIZE  DESIGN_RESOLUTION_480X320
@@ -37,11 +38,14 @@ typedef struct tagResource
 }Resource;
 
 static Resource smallResource  =  { cocos2d::CCSizeMake(480, 320),   "iphone" };
-static Resource mediumResource =  { cocos2d::CCSizeMake(1024, 768),  "ipad"   };
-static Resource largeResource  =  { cocos2d::CCSizeMake(2048, 1536), "ipadhd" };
+static Resource mediumResource  =  { cocos2d::CCSizeMake(960, 640),   "iphone-retina" };
+static Resource largeResource =  { cocos2d::CCSizeMake(1024, 768),  "ipad"   };
+static Resource extralargeResource  =  { cocos2d::CCSizeMake(2048, 1536), "ipadhd" };
 
 #if (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_480X320)
 static cocos2d::CCSize designResolutionSize = cocos2d::CCSizeMake(480, 320);
+#elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_960x640)
+static cocos2d::CCSize designResolutionSize = cocos2d::CCSizeMake(960, 640);
 #elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_1024X768)
 static cocos2d::CCSize designResolutionSize = cocos2d::CCSizeMake(1024, 768);
 #elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_2048X1536)

+ 3 - 3
spine-cocos2dx/example/Classes/ExampleScene.cpp

@@ -17,10 +17,10 @@ CCScene* ExampleScene::scene() {
 bool ExampleScene::init() {
 	if (!CCLayer::init()) return false;
 
-	Atlas *atlas = new Atlas("data/spineboy.atlas");
+	Atlas *atlas = new Atlas("spineboy.txt");
 	SkeletonJson json(atlas);
-	SkeletonData *skeletonData = json.readSkeletonDataFile("data/spineboy-skeleton.json");
-	Animation *animation = json.readAnimationFile("data/spineboy-walk.json", skeletonData);
+	SkeletonData *skeletonData = json.readSkeletonDataFile("spineboy-skeleton.json");
+	Animation *animation = json.readAnimationFile("spineboy-walk.json", skeletonData);
 
 	CCSkeleton* skeletonNode = new CCSkeleton(skeletonData);
 	skeletonNode->state->setAnimation(animation, true);

+ 204 - 0
spine-cocos2dx/example/Resources/common/spineboy-bow.json

@@ -0,0 +1,204 @@
+{
+"bones": {
+	"torso": {
+		"rotate": [
+			{
+				"time": 0,
+				"angle": -16.96,
+				"curve": [ 0.356, 0.01, 0.827, 0.82 ]
+			},
+			{
+				"time": 0.7333,
+				"angle": -33.3,
+				"curve": [ 0.137, 0.2, 0.652, 0.86 ]
+			},
+			{ "time": 1.6, "angle": -8.18 },
+			{ "time": 2.3333, "angle": 1.82 }
+		],
+		"translate": [
+			{ "time": 0, "x": 0, "y": 0 }
+		]
+	},
+	"neck": {
+		"rotate": [
+			{ "time": 0, "angle": 10.71 },
+			{
+				"time": 0.7333,
+				"angle": -12.37,
+				"curve": [ 0.137, 0.2, 0.652, 0.86 ]
+			},
+			{ "time": 2.3333, "angle": 12.74 }
+		],
+		"translate": [
+			{ "time": 0, "x": 0, "y": 0 },
+			{
+				"time": 0.7333,
+				"x": -1.67,
+				"y": -3.3,
+				"curve": [ 0.137, 0.2, 0.652, 0.86 ]
+			},
+			{ "time": 2.3333, "x": -1.04, "y": -0.38 }
+		]
+	},
+	"head": {
+		"rotate": [
+			{ "time": 0, "angle": 12.63 },
+			{
+				"time": 0.7333,
+				"angle": 10.39,
+				"curve": [ 0.137, 0.2, 0.652, 0.86 ]
+			},
+			{ "time": 2.3333, "angle": -11.41 }
+		],
+		"translate": [
+			{ "time": 0, "x": 0, "y": 0 },
+			{ "time": 0.7333, "x": -0.85, "y": -5.38 },
+			{ "time": 2.3333, "x": 1.02, "y": 4.99 }
+		]
+	},
+	"right shoulder": {
+		"rotate": [
+			{ "time": 0, "angle": -7.36 },
+			{ "time": 0.7333, "angle": -229.15 },
+			{ "time": 1.9666, "angle": -12.04 },
+			{ "time": 2.5666, "angle": -39.4 }
+		],
+		"translate": [
+			{ "time": 0, "x": 0, "y": 0 },
+			{ "time": 0.7333, "x": -3.78, "y": -8.32 },
+			{
+				"time": 1.2666,
+				"x": -2.26,
+				"y": 1.26,
+				"curve": [ 0.08, 0.08, 0.75, 1 ]
+			},
+			{ "time": 1.9666, "x": -5.25, "y": 7.6 },
+			{ "time": 2.5666, "x": -5.58, "y": 13.32 }
+		]
+	},
+	"right arm": {
+		"rotate": [
+			{ "time": 0, "angle": 6.19 },
+			{ "time": 0.7333, "angle": 19.54 },
+			{
+				"time": 1.2666,
+				"angle": 90.5,
+				"curve": [ 0.08, 0.08, 0.75, 1 ]
+			},
+			{ "time": 1.9666, "angle": 124.15 },
+			{ "time": 2.5666, "angle": 133.59 }
+		],
+		"translate": [
+			{ "time": 0, "x": 0, "y": 0 }
+		]
+	},
+	"left shoulder": {
+		"rotate": [
+			{ "time": 0, "angle": -21.47 },
+			{ "time": 0.7333, "angle": 94.34 },
+			{
+				"time": 1.4333,
+				"angle": 60.17,
+				"curve": [ 0.08, 0.08, 0.75, 1 ]
+			},
+			{ "time": 1.8666, "angle": 78.57 },
+			{ "time": 2.3333, "angle": 68.5 }
+		],
+		"translate": [
+			{ "time": 0, "x": 0, "y": 0 },
+			{ "time": 0.7333, "x": -8.29, "y": 5.93 },
+			{ "time": 1.8666, "x": -4.3, "y": -5.12 }
+		]
+	},
+	"left arm": {
+		"rotate": [
+			{ "time": 0, "angle": 56.2 },
+			{ "time": 0.7333, "angle": -28.44 },
+			{
+				"time": 1.2666,
+				"angle": -10.8,
+				"curve": [ 0.08, 0.08, 0.75, 1 ]
+			},
+			{ "time": 1.8666, "angle": -43.07 }
+		],
+		"translate": [
+			{ "time": 0, "x": 0, "y": 0 },
+			{ "time": 1.8666, "x": 2.71, "y": 0.13 }
+		]
+	},
+	"right hand": {
+		"rotate": [
+			{ "time": 0, "angle": 0 },
+			{ "time": 0.7333, "angle": -18.22 },
+			{
+				"time": 1.2666,
+				"angle": -33.49,
+				"curve": [ 0.08, 0.08, 0.75, 1 ]
+			},
+			{ "time": 1.9666, "angle": -3.98 },
+			{ "time": 2.5666, "angle": 1.45 }
+		],
+		"translate": [
+			{ "time": 0, "x": 0, "y": 0 }
+		]
+	},
+	"left hand": {
+		"rotate": [
+			{ "time": 0, "angle": 0 },
+			{ "time": 0.7333, "angle": -30.39 },
+			{ "time": 1.9666, "angle": -11.61 }
+		],
+		"translate": [
+			{ "time": 0, "x": 0, "y": 0 },
+			{ "time": 1.8666, "x": 2.71, "y": -0.04 }
+		]
+	},
+	"hip": {
+		"translate": [
+			{ "time": 0, "x": 0, "y": 0 }
+		]
+	},
+	"left upper leg": {
+		"translate": [
+			{ "time": 0, "x": 0, "y": 0 }
+		]
+	},
+	"left lower leg": {
+		"translate": [
+			{ "time": 0, "x": 0, "y": 0 }
+		]
+	},
+	"left foot": {
+		"translate": [
+			{ "time": 0, "x": 0, "y": 0 }
+		]
+	},
+	"right upper leg": {
+		"translate": [
+			{ "time": 0, "x": 0, "y": 0 }
+		]
+	},
+	"right lower leg": {
+		"translate": [
+			{ "time": 0, "x": 0, "y": 0 }
+		]
+	},
+	"right foot": {
+		"translate": [
+			{ "time": 0, "x": 0, "y": 0 }
+		]
+	}
+},
+"slots": {
+	"left hand item": {
+		"attachment": [
+			{ "time": 0, "name": "bow" }
+		]
+	},
+	"left hand": {
+		"attachment": [
+			{ "time": 0, "name": null }
+		]
+	}
+}
+}

+ 372 - 0
spine-cocos2dx/example/Resources/common/spineboy-jump.json

@@ -0,0 +1,372 @@
+{
+"bones": {
+	"hip": {
+		"rotate": [
+			{ "time": 0, "angle": 0, "curve": "stepped" },
+			{ "time": 0.9333, "angle": 0, "curve": "stepped" },
+			{ "time": 1.3666, "angle": 0 }
+		],
+		"translate": [
+			{ "time": 0, "x": -11.57, "y": -3 },
+			{ "time": 0.2333, "x": -16.2, "y": -19.43 },
+			{ "time": 0.3333, "x": 7.66, "y": -8.47 },
+			{ "time": 0.3666, "x": 15.38, "y": 5.01 },
+			{ "time": 0.4666, "x": -7.84, "y": 57.22 },
+			{ "time": 0.6, "x": -10.81, "y": 96.34 },
+			{ "time": 0.7332, "x": -7.01, "y": 54.7 },
+			{ "time": 0.8, "x": -10.58, "y": 32.2 },
+			{ "time": 0.9333, "x": -31.99, "y": 0.45 },
+			{ "time": 1.0666, "x": -12.48, "y": -29.47 },
+			{ "time": 1.3666, "x": -11.57, "y": -3 }
+		],
+		"scale": [
+			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 1.3666, "x": 1, "y": 1 }
+		]
+	},
+	"left upper leg": {
+		"rotate": [
+			{ "time": 0, "angle": 17.12 },
+			{ "time": 0.2333, "angle": 44.35 },
+			{ "time": 0.3333, "angle": 16.45 },
+			{ "time": 0.4, "angle": -9.88 },
+			{ "time": 0.4666, "angle": -11.42 },
+			{ "time": 0.5666, "angle": 23.46 },
+			{ "time": 0.7666, "angle": 71.82 },
+			{ "time": 0.9333, "angle": 65.53 },
+			{ "time": 1.0666, "angle": 51.01 },
+			{ "time": 1.3666, "angle": 17.12 }
+		],
+		"translate": [
+			{ "time": 0, "x": -3, "y": -2.25, "curve": "stepped" },
+			{ "time": 0.9333, "x": -3, "y": -2.25, "curve": "stepped" },
+			{ "time": 1.3666, "x": -3, "y": -2.25 }
+		],
+		"scale": [
+			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 1.3666, "x": 1, "y": 1 }
+		]
+	},
+	"left lower leg": {
+		"rotate": [
+			{ "time": 0, "angle": -16.25 },
+			{ "time": 0.2333, "angle": -52.21 },
+			{ "time": 0.4, "angle": 15.04 },
+			{ "time": 0.4666, "angle": -8.95 },
+			{ "time": 0.5666, "angle": -39.53 },
+			{ "time": 0.7666, "angle": -27.27 },
+			{ "time": 0.9333, "angle": -3.52 },
+			{ "time": 1.0666, "angle": -61.92 },
+			{ "time": 1.3666, "angle": -16.25 }
+		],
+		"translate": [
+			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+			{ "time": 1.3666, "x": 0, "y": 0 }
+		],
+		"scale": [
+			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 1.3666, "x": 1, "y": 1 }
+		]
+	},
+	"left foot": {
+		"rotate": [
+			{ "time": 0, "angle": 0.33 },
+			{ "time": 0.2333, "angle": 6.2 },
+			{ "time": 0.3333, "angle": 14.73 },
+			{ "time": 0.4, "angle": -15.54 },
+			{ "time": 0.4333, "angle": -21.2 },
+			{ "time": 0.5666, "angle": -7.55 },
+			{ "time": 0.7666, "angle": -0.67 },
+			{ "time": 0.9333, "angle": -0.58 },
+			{ "time": 1.0666, "angle": 14.64 },
+			{ "time": 1.3666, "angle": 0.33 }
+		],
+		"translate": [
+			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+			{ "time": 1.3666, "x": 0, "y": 0 }
+		],
+		"scale": [
+			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 1.3666, "x": 1, "y": 1 }
+		]
+	},
+	"right upper leg": {
+		"rotate": [
+			{ "time": 0, "angle": 25.97 },
+			{ "time": 0.2333, "angle": 46.43 },
+			{ "time": 0.3333, "angle": 22.61 },
+			{ "time": 0.4, "angle": 2.13 },
+			{ "time": 0.4666, "angle": 0.04 },
+			{ "time": 0.6, "angle": 65.55 },
+			{ "time": 0.7666, "angle": 64.93 },
+			{ "time": 0.9333, "angle": 41.08 },
+			{ "time": 1.0666, "angle": 66.25 },
+			{ "time": 1.3666, "angle": 25.97 }
+		],
+		"translate": [
+			{ "time": 0, "x": 5.74, "y": 0.61 },
+			{ "time": 0.2333, "x": 4.79, "y": 1.79 },
+			{ "time": 0.3333, "x": 6.05, "y": -4.55 },
+			{ "time": 0.9333, "x": 4.79, "y": 1.79, "curve": "stepped" },
+			{ "time": 1.0666, "x": 4.79, "y": 1.79 },
+			{ "time": 1.3666, "x": 5.74, "y": 0.61 }
+		],
+		"scale": [
+			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 1.3666, "x": 1, "y": 1 }
+		]
+	},
+	"right lower leg": {
+		"rotate": [
+			{ "time": 0, "angle": -27.46 },
+			{ "time": 0.2333, "angle": -64.03 },
+			{ "time": 0.4, "angle": -48.36 },
+			{ "time": 0.5666, "angle": -76.86 },
+			{ "time": 0.7666, "angle": -26.89 },
+			{ "time": 0.9, "angle": -18.96 },
+			{ "time": 0.9333, "angle": -14.18 },
+			{ "time": 1.0666, "angle": -80.44 },
+			{ "time": 1.3666, "angle": -27.46 }
+		],
+		"translate": [
+			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+			{ "time": 1.3666, "x": 0, "y": 0 }
+		],
+		"scale": [
+			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 1.3666, "x": 1, "y": 1 }
+		]
+	},
+	"right foot": {
+		"rotate": [
+			{ "time": 0, "angle": 1.08 },
+			{ "time": 0.2333, "angle": 16.02 },
+			{ "time": 0.3, "angle": 12.94 },
+			{ "time": 0.3333, "angle": 15.16 },
+			{ "time": 0.4, "angle": -14.7 },
+			{ "time": 0.4333, "angle": -12.85 },
+			{ "time": 0.4666, "angle": -19.18 },
+			{ "time": 0.5666, "angle": -15.82 },
+			{ "time": 0.6, "angle": -3.59 },
+			{ "time": 0.7666, "angle": -3.56 },
+			{ "time": 0.9333, "angle": 1.86 },
+			{ "time": 1.0666, "angle": 16.02 },
+			{ "time": 1.3666, "angle": 1.08 }
+		],
+		"translate": [
+			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+			{ "time": 1.3666, "x": 0, "y": 0 }
+		],
+		"scale": [
+			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 1.3666, "x": 1, "y": 1 }
+		]
+	},
+	"torso": {
+		"rotate": [
+			{ "time": 0, "angle": -13.35 },
+			{ "time": 0.2333, "angle": -48.95 },
+			{ "time": 0.4333, "angle": -35.77 },
+			{ "time": 0.6, "angle": -4.59 },
+			{ "time": 0.7666, "angle": 14.61 },
+			{ "time": 0.9333, "angle": 15.74 },
+			{ "time": 1.0666, "angle": -32.43 },
+			{ "time": 1.3666, "angle": -13.35 }
+		],
+		"translate": [
+			{ "time": 0, "x": -3.67, "y": 1.68, "curve": "stepped" },
+			{ "time": 0.9333, "x": -3.67, "y": 1.68, "curve": "stepped" },
+			{ "time": 1.3666, "x": -3.67, "y": 1.68 }
+		],
+		"scale": [
+			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 1.3666, "x": 1, "y": 1 }
+		]
+	},
+	"neck": {
+		"rotate": [
+			{ "time": 0, "angle": 12.78 },
+			{ "time": 0.2333, "angle": 16.45 },
+			{ "time": 0.4, "angle": 26.49 },
+			{ "time": 0.6, "angle": 15.51 },
+			{ "time": 0.7666, "angle": 1.34 },
+			{ "time": 0.9333, "angle": 2.34 },
+			{ "time": 1.0666, "angle": 6.08 },
+			{ "time": 1.3, "angle": 21.23 },
+			{ "time": 1.3666, "angle": 12.78 }
+		],
+		"translate": [
+			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+			{ "time": 1.3666, "x": 0, "y": 0 }
+		],
+		"scale": [
+			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 1.3666, "x": 1, "y": 1 }
+		]
+	},
+	"head": {
+		"rotate": [
+			{ "time": 0, "angle": 5.19 },
+			{ "time": 0.2333, "angle": 20.27 },
+			{ "time": 0.4, "angle": 15.27 },
+			{ "time": 0.6, "angle": -24.69 },
+			{ "time": 0.7666, "angle": -11.02 },
+			{ "time": 0.9333, "angle": -24.38 },
+			{ "time": 1.0666, "angle": 11.99 },
+			{ "time": 1.3, "angle": 4.86 },
+			{ "time": 1.3666, "angle": 5.19 }
+		],
+		"translate": [
+			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+			{ "time": 1.3666, "x": 0, "y": 0 }
+		],
+		"scale": [
+			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 1.3666, "x": 1, "y": 1 }
+		]
+	},
+	"left shoulder": {
+		"rotate": [
+			{ "time": 0, "angle": 0.05 },
+			{ "time": 0.2333, "angle": 279.66 },
+			{ "time": 0.5, "angle": 62.27 },
+			{ "time": 0.9333, "angle": 28.91 },
+			{ "time": 1.0666, "angle": -8.62 },
+			{ "time": 1.1666, "angle": -18.43 },
+			{ "time": 1.3666, "angle": 0.05 }
+		],
+		"translate": [
+			{ "time": 0, "x": -1.76, "y": 0.56, "curve": "stepped" },
+			{ "time": 0.9333, "x": -1.76, "y": 0.56, "curve": "stepped" },
+			{ "time": 1.3666, "x": -1.76, "y": 0.56 }
+		],
+		"scale": [
+			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 1.3666, "x": 1, "y": 1 }
+		]
+	},
+	"left hand": {
+		"rotate": [
+			{ "time": 0, "angle": 11.58, "curve": "stepped" },
+			{ "time": 0.9333, "angle": 11.58, "curve": "stepped" },
+			{ "time": 1.3666, "angle": 11.58 }
+		],
+		"translate": [
+			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+			{ "time": 1.3666, "x": 0, "y": 0 }
+		],
+		"scale": [
+			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 1.3666, "x": 1, "y": 1 }
+		]
+	},
+	"left arm": {
+		"rotate": [
+			{ "time": 0, "angle": 0.51 },
+			{ "time": 0.4333, "angle": 12.82 },
+			{ "time": 0.6, "angle": 47.55 },
+			{ "time": 0.9333, "angle": 12.82 },
+			{ "time": 1.1666, "angle": -6.5 },
+			{ "time": 1.3666, "angle": 0.51 }
+		],
+		"translate": [
+			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+			{ "time": 1.3666, "x": 0, "y": 0 }
+		],
+		"scale": [
+			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 1.3666, "x": 1, "y": 1 }
+		]
+	},
+	"right shoulder": {
+		"rotate": [
+			{ "time": 0, "angle": 43.82 },
+			{ "time": 0.2333, "angle": -8.74 },
+			{ "time": 0.5333, "angle": -208.02 },
+			{ "time": 0.9333, "angle": -246.72 },
+			{ "time": 1.0666, "angle": -307.13 },
+			{ "time": 1.1666, "angle": 37.15 },
+			{ "time": 1.3666, "angle": 43.82 }
+		],
+		"translate": [
+			{ "time": 0, "x": -7.84, "y": 7.19, "curve": "stepped" },
+			{ "time": 0.9333, "x": -7.84, "y": 7.19, "curve": "stepped" },
+			{ "time": 1.3666, "x": -7.84, "y": 7.19 }
+		],
+		"scale": [
+			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 1.3666, "x": 1, "y": 1 }
+		]
+	},
+	"right arm": {
+		"rotate": [
+			{ "time": 0, "angle": -4.02 },
+			{ "time": 0.6, "angle": 17.5 },
+			{ "time": 0.9333, "angle": -4.02 },
+			{ "time": 1.1666, "angle": -16.71 },
+			{ "time": 1.3666, "angle": -4.02 }
+		],
+		"translate": [
+			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+			{ "time": 1.3666, "x": 0, "y": 0 }
+		],
+		"scale": [
+			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 1.3666, "x": 1, "y": 1 }
+		]
+	},
+	"right hand": {
+		"rotate": [
+			{ "time": 0, "angle": 22.92, "curve": "stepped" },
+			{ "time": 0.9333, "angle": 22.92, "curve": "stepped" },
+			{ "time": 1.3666, "angle": 22.92 }
+		],
+		"translate": [
+			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+			{ "time": 1.3666, "x": 0, "y": 0 }
+		],
+		"scale": [
+			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 1.3666, "x": 1, "y": 1 }
+		]
+	},
+	"root": {
+		"rotate": [
+			{ "time": 0, "angle": 0 },
+			{ "time": 0.4333, "angle": -14.52 },
+			{ "time": 0.8, "angle": 9.85 },
+			{ "time": 1.3666, "angle": 0 }
+		],
+		"scale": [
+			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+			{ "time": 1.3666, "x": 1, "y": 1 }
+		]
+	}
+}
+}

+ 13 - 10
spine-cocos2dx/example/Resources/data/spineboy-skeleton.json → spine-cocos2dx/example/Resources/common/spineboy-skeleton.json

@@ -1,7 +1,7 @@
 {
 "bones": [
-	{ "name": "root", "length": 0 },
-	{ "name": "hip", "parent": "root", "length": 0, "x": 0.64, "y": 114.41 },
+	{ "name": "root" },
+	{ "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 },
 	{ "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 },
 	{ "name": "left lower leg", "parent": "left upper leg", "length": 56.45, "x": 51.78, "y": 3.46, "rotation": -16.65 },
 	{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 64.02, "y": -8.67, "rotation": 102.43 },
@@ -15,16 +15,15 @@
 	{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 49.95, "y": -0.12, "rotation": 40.12 },
 	{ "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 },
 	{ "name": "left shoulder", "parent": "torso", "length": 44.19, "x": 78.96, "y": -15.75, "rotation": -156.96 },
-	{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 44.19, "y": -0.01, "rotation": 28.16 },
+	{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 44.19, "y": -0.01, "rotation": 44.77 },
 	{ "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 },
-	{ "name": "pelvis", "parent": "hip", "length": 0, "x": 1.41, "y": -6.57 }
+	{ "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 }
 ],
 "slots": [
-	{ "name": "template", "bone": "root", "color": "ff898c86" },
 	{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left-shoulder" },
 	{ "name": "left arm", "bone": "left arm", "attachment": "left-arm" },
-	{ "name": "left hand", "bone": "left hand", "attachment": "left-hand" },
 	{ "name": "left foot", "bone": "left foot", "attachment": "left-foot" },
+	{ "name": "left hand", "bone": "left hand", "attachment": "left-hand" },
 	{ "name": "left lower leg", "bone": "left lower leg", "attachment": "left-lower-leg" },
 	{ "name": "left upper leg", "bone": "left upper leg", "attachment": "left-upper-leg" },
 	{ "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" },
@@ -37,7 +36,8 @@
 	{ "name": "eyes", "bone": "head", "attachment": "eyes" },
 	{ "name": "right shoulder", "bone": "right shoulder", "attachment": "right-shoulder" },
 	{ "name": "right arm", "bone": "right arm", "attachment": "right-arm" },
-	{ "name": "right hand", "bone": "right hand", "attachment": "right-hand" }
+	{ "name": "right hand", "bone": "right hand", "attachment": "right-hand" },
+	{ "name": "left hand item", "bone": "left hand" }
 ],
 "skins": {
 	"default": {
@@ -47,12 +47,12 @@
 		"left arm": {
 			"left-arm": { "x": 15.11, "y": -0.44, "rotation": 33.84, "width": 35, "height": 29 }
 		},
-		"left hand": {
-			"left-hand": { "x": 0.75, "y": 1.86, "rotation": 31.14, "width": 35, "height": 38 }
-		},
 		"left foot": {
 			"left-foot": { "x": 24.35, "y": 8.88, "rotation": 3.32, "width": 65, "height": 30 }
 		},
+		"left hand": {
+			"left-hand": { "x": 0.75, "y": 1.86, "rotation": 31.14, "width": 35, "height": 38 }
+		},
 		"left lower leg": {
 			"left-lower-leg": { "x": 24.55, "y": -1.92, "rotation": 105.75, "width": 49, "height": 64 }
 		},
@@ -92,6 +92,9 @@
 		},
 		"right hand": {
 			"right-hand": { "x": 6.82, "y": 1.25, "rotation": 91.96, "width": 32, "height": 32 }
+		},
+		"left hand item": {
+			"bow": { "x": -20.35, "y": 9.68, "rotation": 4.85, "width": 65, "height": 261 }
 		}
 	}
 }

+ 0 - 0
spine-cocos2dx/example/Resources/data/spineboy-walk.json → spine-cocos2dx/example/Resources/common/spineboy-walk.json


二進制
spine-cocos2dx/example/Resources/data/spineboy.png


二進制
spine-cocos2dx/example/Resources/iphone-retina/spineboy.png


+ 93 - 87
spine-cocos2dx/example/Resources/data/spineboy.atlas → spine-cocos2dx/example/Resources/iphone-retina/spineboy.txt

@@ -1,165 +1,171 @@
-
-data/spineboy.png
+spineboy.png
 format: RGBA8888
-filter: Nearest,Nearest
+filter: Linear,Linear
 repeat: none
-head
+left-ankle
   rotate: false
-  xy: 1, 122
-  size: 121, 132
-  orig: 121, 132
+  xy: 67, 644
+  size: 25, 32
+  orig: 25, 32
   offset: 0, 0
   index: -1
-torso
+left-lower-leg
   rotate: false
-  xy: 1, 28
-  size: 68, 92
-  orig: 68, 92
+  xy: 74, 208
+  size: 49, 64
+  orig: 49, 64
   offset: 0, 0
   index: -1
 left-pant-bottom
   rotate: false
-  xy: 1, 4
+  xy: 69, 567
   size: 44, 22
   orig: 44, 22
   offset: 0, 0
   index: -1
-right-pant-bottom
+right-shoulder
   rotate: false
-  xy: 47, 8
-  size: 46, 18
-  orig: 46, 18
+  xy: 71, 274
+  size: 52, 51
+  orig: 52, 51
   offset: 0, 0
   index: -1
-right-upper-leg
+right-ankle
   rotate: false
-  xy: 71, 50
-  size: 44, 70
-  orig: 44, 70
+  xy: 94, 628
+  size: 25, 30
+  orig: 25, 30
   offset: 0, 0
   index: -1
-pelvis
+right-pant-bottom
   rotate: false
-  xy: 95, 1
-  size: 63, 47
-  orig: 63, 47
+  xy: 69, 524
+  size: 46, 18
+  orig: 46, 18
   offset: 0, 0
   index: -1
-left-upper-leg
+head
   rotate: false
-  xy: 117, 53
-  size: 33, 67
-  orig: 33, 67
+  xy: 2, 2
+  size: 121, 132
+  orig: 121, 132
   offset: 0, 0
   index: -1
-right-foot
-  rotate: false
-  xy: 160, 224
-  size: 67, 30
-  orig: 67, 30
+eyes
+  rotate: true
+  xy: 96, 136
+  size: 27, 34
+  orig: 34, 27
   offset: 0, 0
   index: -1
-left-shoulder
-  rotate: false
-  xy: 124, 201
-  size: 34, 53
-  orig: 34, 53
+eyes-closed
+  rotate: true
+  xy: 96, 172
+  size: 27, 34
+  orig: 34, 27
   offset: 0, 0
   index: -1
-left-ankle
-  rotate: false
-  xy: 229, 222
-  size: 25, 32
-  orig: 25, 32
+torso
+  rotate: true
+  xy: 2, 136
+  size: 92, 68
+  orig: 68, 92
   offset: 0, 0
   index: -1
 left-foot
   rotate: false
-  xy: 160, 192
+  xy: 2, 582
   size: 65, 30
   orig: 65, 30
   offset: 0, 0
   index: -1
 neck
   rotate: false
-  xy: 124, 171
+  xy: 33, 614
   size: 34, 28
   orig: 34, 28
   offset: 0, 0
   index: -1
-right-arm
+right-foot
   rotate: false
-  xy: 124, 124
-  size: 21, 45
-  orig: 21, 45
+  xy: 2, 287
+  size: 67, 30
+  orig: 67, 30
   offset: 0, 0
   index: -1
-right-ankle
-  rotate: false
-  xy: 227, 190
-  size: 25, 30
-  orig: 25, 30
+left-shoulder
+  rotate: true
+  xy: 69, 327
+  size: 53, 34
+  orig: 34, 53
   offset: 0, 0
   index: -1
-left-hand
-  rotate: false
-  xy: 147, 131
-  size: 35, 38
-  orig: 35, 38
+right-upper-leg
+  rotate: true
+  xy: 2, 206
+  size: 70, 44
+  orig: 44, 70
   offset: 0, 0
   index: -1
 left-arm
-  rotate: false
-  xy: 184, 161
-  size: 35, 29
+  rotate: true
+  xy: 2, 628
+  size: 29, 35
   orig: 35, 29
   offset: 0, 0
   index: -1
-eyes-closed
-  rotate: false
-  xy: 221, 161
-  size: 34, 27
-  orig: 34, 27
+left-hand
+  rotate: true
+  xy: 69, 591
+  size: 38, 35
+  orig: 35, 38
   offset: 0, 0
   index: -1
-right-lower-leg
+bow
   rotate: false
-  xy: 152, 65
-  size: 51, 64
-  orig: 51, 64
+  xy: 2, 319
+  size: 65, 261
+  orig: 65, 261
+  offset: 0, 0
+  index: -1
+right-arm
+  rotate: true
+  xy: 69, 544
+  size: 45, 21
+  orig: 21, 45
   offset: 0, 0
   index: -1
 right-foot-idle
   rotate: false
-  xy: 184, 131
+  xy: 69, 363
   size: 53, 28
   orig: 53, 28
   offset: 0, 0
   index: -1
-left-lower-leg
+right-lower-leg
   rotate: false
-  xy: 205, 65
-  size: 49, 64
-  orig: 49, 64
+  xy: 69, 393
+  size: 51, 64
+  orig: 51, 64
   offset: 0, 0
   index: -1
-right-shoulder
-  rotate: false
-  xy: 160, 12
-  size: 52, 51
-  orig: 52, 51
+pelvis
+  rotate: true
+  xy: 69, 459
+  size: 47, 63
+  orig: 63, 47
   offset: 0, 0
   index: -1
-eyes
-  rotate: false
-  xy: 214, 36
-  size: 34, 27
-  orig: 34, 27
+left-upper-leg
+  rotate: true
+  xy: 2, 252
+  size: 67, 33
+  orig: 33, 67
   offset: 0, 0
   index: -1
 right-hand
   rotate: false
-  xy: 214, 2
+  xy: 33, 644
   size: 32, 32
   orig: 32, 32
   offset: 0, 0

二進制
spine-cocos2dx/example/Resources/iphone/spineboy.png


+ 172 - 0
spine-cocos2dx/example/Resources/iphone/spineboy.txt

@@ -0,0 +1,172 @@
+spineboy.png
+format: RGBA8888
+filter: Linear,Linear
+repeat: none
+left-ankle
+  rotate: true
+  xy: 168, 92
+  size: 16, 13
+  orig: 13, 16
+  offset: 0, 0
+  index: -1
+left-lower-leg
+  rotate: false
+  xy: 101, 37
+  size: 25, 32
+  orig: 25, 32
+  offset: 0, 0
+  index: -1
+left-pant-bottom
+  rotate: false
+  xy: 152, 61
+  size: 22, 11
+  orig: 22, 11
+  offset: 0, 0
+  index: -1
+right-shoulder
+  rotate: false
+  xy: 127, 74
+  size: 26, 26
+  orig: 26, 26
+  offset: 0, 0
+  index: -1
+right-ankle
+  rotate: false
+  xy: 148, 107
+  size: 13, 15
+  orig: 13, 15
+  offset: 0, 0
+  index: -1
+right-pant-bottom
+  rotate: true
+  xy: 152, 36
+  size: 9, 23
+  orig: 23, 9
+  offset: 0, 0
+  index: -1
+head
+  rotate: false
+  xy: 2, 37
+  size: 61, 66
+  orig: 61, 66
+  offset: 0, 0
+  index: -1
+eyes
+  rotate: true
+  xy: 112, 105
+  size: 14, 17
+  orig: 17, 14
+  offset: 0, 0
+  index: -1
+eyes-closed
+  rotate: false
+  xy: 163, 107
+  size: 17, 14
+  orig: 17, 14
+  offset: 0, 0
+  index: -1
+torso
+  rotate: false
+  xy: 65, 37
+  size: 34, 46
+  orig: 34, 46
+  offset: 0, 0
+  index: -1
+left-foot
+  rotate: true
+  xy: 163, 2
+  size: 15, 33
+  orig: 33, 15
+  offset: 0, 0
+  index: -1
+neck
+  rotate: true
+  xy: 96, 105
+  size: 14, 17
+  orig: 17, 14
+  offset: 0, 0
+  index: -1
+right-foot
+  rotate: false
+  xy: 65, 85
+  size: 34, 15
+  orig: 34, 15
+  offset: 0, 0
+  index: -1
+left-shoulder
+  rotate: true
+  xy: 38, 105
+  size: 27, 17
+  orig: 17, 27
+  offset: 0, 0
+  index: -1
+right-upper-leg
+  rotate: false
+  xy: 128, 37
+  size: 22, 35
+  orig: 22, 35
+  offset: 0, 0
+  index: -1
+left-arm
+  rotate: true
+  xy: 163, 37
+  size: 15, 18
+  orig: 18, 15
+  offset: 0, 0
+  index: -1
+left-hand
+  rotate: false
+  xy: 128, 102
+  size: 18, 19
+  orig: 18, 19
+  offset: 0, 0
+  index: -1
+bow
+  rotate: true
+  xy: 2, 2
+  size: 131, 33
+  orig: 33, 131
+  offset: 0, 0
+  index: -1
+right-arm
+  rotate: false
+  xy: 155, 74
+  size: 11, 23
+  orig: 11, 23
+  offset: 0, 0
+  index: -1
+right-foot-idle
+  rotate: false
+  xy: 67, 102
+  size: 27, 14
+  orig: 27, 14
+  offset: 0, 0
+  index: -1
+right-lower-leg
+  rotate: false
+  xy: 135, 2
+  size: 26, 32
+  orig: 26, 32
+  offset: 0, 0
+  index: -1
+pelvis
+  rotate: true
+  xy: 101, 71
+  size: 24, 32
+  orig: 32, 24
+  offset: 0, 0
+  index: -1
+left-upper-leg
+  rotate: true
+  xy: 2, 105
+  size: 34, 17
+  orig: 17, 34
+  offset: 0, 0
+  index: -1
+right-hand
+  rotate: false
+  xy: 168, 74
+  size: 16, 16
+  orig: 16, 16
+  offset: 0, 0
+  index: -1

+ 12 - 4
spine-cocos2dx/example/proj.ios/ExampleSpine.xcodeproj/project.pbxproj

@@ -11,6 +11,9 @@
 		1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
 		1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
 		288765A50DF7441C002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765A40DF7441C002DB57D /* CoreGraphics.framework */; };
+		2FC812261700449A00A93590 /* iphone in Resources */ = {isa = PBXBuildFile; fileRef = 2FC812241700449A00A93590 /* iphone */; };
+		2FC812271700449A00A93590 /* iphone-retina in Resources */ = {isa = PBXBuildFile; fileRef = 2FC812251700449A00A93590 /* iphone-retina */; };
+		2FC812291700479600A93590 /* common in Resources */ = {isa = PBXBuildFile; fileRef = 2FC812281700479600A93590 /* common */; };
 		2FEE8527170030A20013E4C9 /* AppDelegate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2FEE8522170030A20013E4C9 /* AppDelegate.cpp */; };
 		2FEE8528170030A20013E4C9 /* ExampleScene.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2FEE8525170030A20013E4C9 /* ExampleScene.cpp */; };
 		2FEE85931700331D0013E4C9 /* Atlas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2FEE858D1700331D0013E4C9 /* Atlas.cpp */; };
@@ -38,7 +41,6 @@
 		2FEE85D6170033410013E4C9 /* Skin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2FEE85C9170033410013E4C9 /* Skin.cpp */; };
 		2FEE85D7170033410013E4C9 /* Slot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2FEE85CA170033410013E4C9 /* Slot.cpp */; };
 		2FEE85D8170033410013E4C9 /* SlotData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2FEE85CB170033410013E4C9 /* SlotData.cpp */; };
-		2FEE85DE170033BC0013E4C9 /* data in Resources */ = {isa = PBXBuildFile; fileRef = 2FEE85DD170033BC0013E4C9 /* data */; };
 		BF1373EF128A898400D9F789 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF492D4B1289302400A09262 /* OpenGLES.framework */; };
 		BF1373F0128A899500D9F789 /* libxml2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = BF492C21128924A800A09262 /* libxml2.dylib */; };
 		BF1373F1128A899E00D9F789 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = BF492B6912891AC600A09262 /* libz.dylib */; };
@@ -78,6 +80,9 @@
 		1D6058910D05DD3D006BFB54 /* ExampleSpine.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ExampleSpine.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
 		288765A40DF7441C002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
+		2FC812241700449A00A93590 /* iphone */ = {isa = PBXFileReference; lastKnownFileType = folder; path = iphone; sourceTree = "<group>"; };
+		2FC812251700449A00A93590 /* iphone-retina */ = {isa = PBXFileReference; lastKnownFileType = folder; path = "iphone-retina"; sourceTree = "<group>"; };
+		2FC812281700479600A93590 /* common */ = {isa = PBXFileReference; lastKnownFileType = folder; path = common; sourceTree = "<group>"; };
 		2FEE8522170030A20013E4C9 /* AppDelegate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AppDelegate.cpp; sourceTree = "<group>"; };
 		2FEE8523170030A20013E4C9 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
 		2FEE8524170030A20013E4C9 /* AppMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppMacros.h; sourceTree = "<group>"; };
@@ -139,7 +144,6 @@
 		2FEE85C9170033410013E4C9 /* Skin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Skin.cpp; path = "../../../spine-cpp/src/spine/Skin.cpp"; sourceTree = "<group>"; };
 		2FEE85CA170033410013E4C9 /* Slot.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Slot.cpp; path = "../../../spine-cpp/src/spine/Slot.cpp"; sourceTree = "<group>"; };
 		2FEE85CB170033410013E4C9 /* SlotData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SlotData.cpp; path = "../../../spine-cpp/src/spine/SlotData.cpp"; sourceTree = "<group>"; };
-		2FEE85DD170033BC0013E4C9 /* data */ = {isa = PBXFileReference; lastKnownFileType = folder; path = data; sourceTree = "<group>"; };
 		781C33B11547F06B00633F88 /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; };
 		781C33B31547F06B00633F88 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
 		781C33B51547F06B00633F88 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
@@ -324,7 +328,9 @@
 		784521C214EBA449009D533B /* Resources */ = {
 			isa = PBXGroup;
 			children = (
-				2FEE85DD170033BC0013E4C9 /* data */,
+				2FC812281700479600A93590 /* common */,
+				2FC812241700449A00A93590 /* iphone */,
+				2FC812251700449A00A93590 /* iphone-retina */,
 				D4EF94ED15BD319D00D803EB /* Icon-144.png */,
 				D4EF94EB15BD319B00D803EB /* Icon-72.png */,
 				D4EF94E915BD319500D803EB /* Icon-114.png */,
@@ -442,7 +448,9 @@
 				2FEE85B91700333C0013E4C9 /* json_internalarray.inl in Resources */,
 				2FEE85BA1700333C0013E4C9 /* json_internalmap.inl in Resources */,
 				2FEE85BD1700333C0013E4C9 /* json_valueiterator.inl in Resources */,
-				2FEE85DE170033BC0013E4C9 /* data in Resources */,
+				2FC812261700449A00A93590 /* iphone in Resources */,
+				2FC812271700449A00A93590 /* iphone-retina in Resources */,
+				2FC812291700479600A93590 /* common in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

二進制
spine-cocos2dx/example/proj.ios/ExampleSpine.xcodeproj/project.xcworkspace/xcuserdata/pancake.xcuserdatad/UserInterfaceState.xcuserstate


+ 5 - 0
spine-cocos2dx/example/proj.ios/ExampleSpine.xcodeproj/xcuserdata/pancake.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Bucket
+   type = "1"
+   version = "1.0">
+</Bucket>

二進制
spine-cocos2dx/example/raw/images/bow.png


二進制
spine-cocos2dx/example/raw/images/eyes-closed.png


二進制
spine-cocos2dx/example/raw/images/eyes.png


二進制
spine-cocos2dx/example/raw/images/head.png


二進制
spine-cocos2dx/example/raw/images/left-ankle.png


二進制
spine-cocos2dx/example/raw/images/left-arm.png


二進制
spine-cocos2dx/example/raw/images/left-foot.png


二進制
spine-cocos2dx/example/raw/images/left-hand.png


二進制
spine-cocos2dx/example/raw/images/left-lower-leg.png


二進制
spine-cocos2dx/example/raw/images/left-pant-bottom.png


二進制
spine-cocos2dx/example/raw/images/left-shoulder.png


二進制
spine-cocos2dx/example/raw/images/left-upper-leg.png


二進制
spine-cocos2dx/example/raw/images/neck.png


+ 8 - 0
spine-cocos2dx/example/raw/images/pack.json

@@ -0,0 +1,8 @@
+{
+	pot: true,
+	paddingX: 2,
+	paddingY: 2,
+	duplicatePadding: false,
+	filterMin: Linear,
+	filterMag: Linear,
+}

二進制
spine-cocos2dx/example/raw/images/pelvis.png


二進制
spine-cocos2dx/example/raw/images/right-ankle.png


二進制
spine-cocos2dx/example/raw/images/right-arm.png


二進制
spine-cocos2dx/example/raw/images/right-foot-idle.png


二進制
spine-cocos2dx/example/raw/images/right-foot.png


二進制
spine-cocos2dx/example/raw/images/right-hand.png


二進制
spine-cocos2dx/example/raw/images/right-lower-leg.png


二進制
spine-cocos2dx/example/raw/images/right-pant-bottom.png


二進制
spine-cocos2dx/example/raw/images/right-shoulder.png


二進制
spine-cocos2dx/example/raw/images/right-upper-leg.png


二進制
spine-cocos2dx/example/raw/images/torso.png


二進制
spine-cocos2dx/example/raw/spineboy.project


+ 171 - 0
spine-cocos2dx/example/raw/spineboy.tps

@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<data version="1.0">
+    <struct type="Settings">
+        <key>fileFormatVersion</key>
+        <int>1</int>
+        <key>variation</key>
+        <string>main</string>
+        <key>verbose</key>
+        <false/>
+        <key>autoSDSettings</key>
+        <array>
+            <struct type="AutoSDSettings">
+                <key>scale</key>
+                <double>0.5</double>
+                <key>extension</key>
+                <string>/iphone/</string>
+                <key>acceptFractionalValues</key>
+                <false/>
+                <key>maxTextureSize</key>
+                <QSize>
+                    <key>width</key>
+                    <int>2048</int>
+                    <key>height</key>
+                    <int>2048</int>
+                </QSize>
+            </struct>
+        </array>
+        <key>allowRotation</key>
+        <true/>
+        <key>quiet</key>
+        <false/>
+        <key>premultiplyAlpha</key>
+        <false/>
+        <key>shapeDebug</key>
+        <false/>
+        <key>dpi</key>
+        <uint>72</uint>
+        <key>dataFormat</key>
+        <string>libgdx</string>
+        <key>textureFileName</key>
+        <filename>../Resources/iphone-retina/spineboy.png</filename>
+        <key>flipPVR</key>
+        <false/>
+        <key>ditherType</key>
+        <enum type="SettingsBase::DitherType">NearestNeighbour</enum>
+        <key>backgroundColor</key>
+        <uint>0</uint>
+        <key>libGdx</key>
+        <struct type="LibGDX">
+            <key>filtering</key>
+            <struct type="LibGDXFiltering">
+                <key>x</key>
+                <enum type="LibGDXFiltering::Filtering">Linear</enum>
+                <key>y</key>
+                <enum type="LibGDXFiltering::Filtering">Linear</enum>
+            </struct>
+        </struct>
+        <key>shapePadding</key>
+        <uint>2</uint>
+        <key>jpgQuality</key>
+        <uint>80</uint>
+        <key>pngOptimizationLevel</key>
+        <uint>0</uint>
+        <key>textureSubPath</key>
+        <string></string>
+        <key>textureFormat</key>
+        <enum type="SettingsBase::TextureFormat">png</enum>
+        <key>borderPadding</key>
+        <uint>2</uint>
+        <key>maxTextureSize</key>
+        <QSize>
+            <key>width</key>
+            <int>2048</int>
+            <key>height</key>
+            <int>2048</int>
+        </QSize>
+        <key>fixedTextureSize</key>
+        <QSize>
+            <key>width</key>
+            <int>-1</int>
+            <key>height</key>
+            <int>-1</int>
+        </QSize>
+        <key>reduceBorderArtifacts</key>
+        <false/>
+        <key>algorithmSettings</key>
+        <struct type="AlgorithmSettings">
+            <key>algorithm</key>
+            <enum type="AlgorithmSettings::AlgorithmId">MaxRects</enum>
+            <key>freeSizeMode</key>
+            <enum type="AlgorithmSettings::AlgorithmFreeSizeMode">Best</enum>
+            <key>sizeConstraints</key>
+            <enum type="AlgorithmSettings::SizeConstraints">NPOT</enum>
+            <key>forceSquared</key>
+            <false/>
+            <key>forceWordAligned</key>
+            <false/>
+            <key>maxRects</key>
+            <struct type="AlgorithmMaxRectsSettings">
+                <key>heuristic</key>
+                <enum type="AlgorithmMaxRectsSettings::Heuristic">Best</enum>
+            </struct>
+            <key>basic</key>
+            <struct type="AlgorithmBasicSettings">
+                <key>sortBy</key>
+                <enum type="AlgorithmBasicSettings::SortBy">Best</enum>
+                <key>order</key>
+                <enum type="AlgorithmBasicSettings::Order">Ascending</enum>
+            </struct>
+        </struct>
+        <key>andEngine</key>
+        <struct type="AndEngine">
+            <key>minFilter</key>
+            <enum type="AndEngine::MinFilter">Linear</enum>
+            <key>packageName</key>
+            <string>Texture</string>
+            <key>javaFileName</key>
+            <filename>../Resources/data/spineboy2.java</filename>
+            <key>wrap</key>
+            <struct type="AndEngineWrap">
+                <key>s</key>
+                <enum type="AndEngineWrap::Wrap">Clamp</enum>
+                <key>t</key>
+                <enum type="AndEngineWrap::Wrap">Clamp</enum>
+            </struct>
+            <key>magFilter</key>
+            <enum type="AndEngine::MagFilter">MagLinear</enum>
+        </struct>
+        <key>dataFileName</key>
+        <filename>../Resources/iphone-retina/spineboy.txt</filename>
+        <key>mainExtension</key>
+        <string>/iphone-retina/</string>
+        <key>forceIdenticalLayout</key>
+        <false/>
+        <key>outputFormat</key>
+        <enum type="SettingsBase::OutputFormat">RGBA8888</enum>
+        <key>autoAliasEnabled</key>
+        <true/>
+        <key>trimSpriteNames</key>
+        <false/>
+        <key>globalSpriteSettings</key>
+        <struct type="SpriteSettings">
+            <key>scale</key>
+            <double>1</double>
+            <key>scaleMode</key>
+            <enum type="ScaleMode">Smooth</enum>
+            <key>innerPadding</key>
+            <uint>0</uint>
+            <key>extrude</key>
+            <uint>0</uint>
+            <key>trimThreshold</key>
+            <uint>1</uint>
+            <key>trimMode</key>
+            <enum type="SpriteSettings::TrimMode">Trim</enum>
+            <key>heuristicMask</key>
+            <false/>
+        </struct>
+        <key>fileList</key>
+        <array>
+            <filename>images</filename>
+        </array>
+        <key>ignoreFileList</key>
+        <array/>
+        <key>replaceList</key>
+        <array/>
+        <key>commonDivisorX</key>
+        <uint>1</uint>
+        <key>commonDivisorY</key>
+        <uint>1</uint>
+    </struct>
+</data>