30#include "spine/spine.h"
42SpineTests::SpineTests()
63 if (!SpineTestLayer::init())
return false;
65 _title =
"BatchingExample";
68 _atlas = spAtlas_createFromFile(
"spine/spineboy.atlas", 0);
69 CCASSERT(
_atlas,
"Error reading atlas file.");
78 _skeletonData = spSkeletonJson_readSkeletonDataFile(json,
"spine/spineboy-ess.json");
79 CCASSERT(
_skeletonData, json->error ? json->error :
"Error reading skeleton data file.");
80 spSkeletonJson_dispose(json);
84 spAnimationStateData_setMixByName(
_stateData,
"walk",
"jump", 0.2f);
85 spAnimationStateData_setMixByName(
_stateData,
"jump",
"run", 0.2f);
87 int xMin = _contentSize.width * 0.10f, xMax = _contentSize.width * 0.90f;
88 int yMin = 0, yMax = _contentSize.height * 0.7f;
89 for (
int i = 0; i < 50; i++) {
91 SkeletonAnimation* skeletonNode = SkeletonAnimation::createWithData(
_skeletonData,
false);
92 skeletonNode->setAnimationStateData(
_stateData);
94 skeletonNode->setAnimation(0,
"walk",
true);
95 skeletonNode->addAnimation(0,
"jump",
false, 3);
96 skeletonNode->addAnimation(0,
"run",
true);
98 skeletonNode->setPosition(Vec2(
99 RandomHelper::random_int(xMin, xMax),
100 RandomHelper::random_int(yMin, yMax)
102 skeletonNode->setScale(0.8);
103 addChild(skeletonNode);
121 if (!SpineTestLayer::init())
return false;
125 skeletonNode = SkeletonAnimation::createWithJsonFile(
"spine/coin-pro.json",
"spine/coin.atlas", 1.f);
128 skeletonNode->setPosition(Vec2(_contentSize.width / 2, 100));
137 if (!SpineTestLayer::init())
return false;
139 _title =
"GoblinsExample";
141 skeletonNode = SkeletonAnimation::createWithJsonFile(
"spine/goblins-pro.json",
"spine/goblins.atlas", 1.5f);
145 skeletonNode->setPosition(Vec2(_contentSize.width / 2, 20));
154 if (!SpineTestLayer::init())
return false;
157 skeletonNode = SkeletonAnimation::createWithJsonFile(
"spine/raptor-pro.json",
"spine/raptor.atlas", 0.5f);
163 skeletonNode->setPosition(Vec2(_contentSize.width / 2, 20));
172 if (!SpineTestLayer::init())
return false;
174 _title =
"SpineboyExample";
175 skeletonNode = SkeletonAnimation::createWithJsonFile(
"spine/spineboy-ess.json",
"spine/spineboy.atlas", 0.6f);
176 skeletonNode->setStartListener( [] (spTrackEntry* entry) {
177 log(
"%d start: %s", entry->trackIndex, entry->animation->name);
179 skeletonNode->setInterruptListener( [] (spTrackEntry* entry) {
180 log(
"%d interrupt", entry->trackIndex);
182 skeletonNode->setEndListener( [] (spTrackEntry* entry) {
183 log(
"%d end", entry->trackIndex);
185 skeletonNode->setCompleteListener( [] (spTrackEntry* entry) {
186 log(
"%d complete", entry->trackIndex);
188 skeletonNode->setDisposeListener( [] (spTrackEntry* entry) {
189 log(
"%d dispose", entry->trackIndex);
191 skeletonNode->setEventListener( [] (spTrackEntry* entry, spEvent* event) {
192 log(
"%d event: %s, %d, %f, %s", entry->trackIndex, event->data->name, event->intValue, event->floatValue, event->stringValue);
198 spTrackEntry* jumpEntry =
skeletonNode->addAnimation(0,
"jump",
false, 1);
201 skeletonNode->setTrackStartListener(jumpEntry, [] (spTrackEntry* entry) {
208 skeletonNode->setPosition(Vec2(_contentSize.width / 2, 20));
225 if (!SpineTestLayer::init())
return false;
228 skeletonNode = SkeletonAnimation::createWithJsonFile(
"spine/tank-pro.json",
"spine/tank.atlas", 0.5f);
231 skeletonNode->setPosition(Vec2(_contentSize.width / 2 + 400, 20));
#define ADD_TEST_CASE(__className__)
spAttachmentLoader * _attachmentLoader
spSkeletonData * _skeletonData
spAnimationStateData * _stateData
spine::SkeletonAnimation * skeletonNode
spine::SkeletonAnimation * skeletonNode
spine::SkeletonAnimation * skeletonNode
virtual std::string title() const
virtual void update(float deltaTime)
spine::SkeletonAnimation * skeletonNode
spine::SkeletonAnimation * skeletonNode