mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2025-12-20 09:16:01 +08:00
[cocos2dx] Added mix-and-match example. See #1375.
This commit is contained in:
parent
76af7851dc
commit
e9929461f4
@ -36,6 +36,7 @@
|
|||||||
#include "BatchingExample.h"
|
#include "BatchingExample.h"
|
||||||
#include "CoinExample.h"
|
#include "CoinExample.h"
|
||||||
#include "SkeletonRendererSeparatorExample.h"
|
#include "SkeletonRendererSeparatorExample.h"
|
||||||
|
#include "MixAndMatchExample.h"
|
||||||
#include <spine/Debug.h>
|
#include <spine/Debug.h>
|
||||||
#include "AppMacros.h"
|
#include "AppMacros.h"
|
||||||
#include <spine/SkeletonTwoColorBatch.h>
|
#include <spine/SkeletonTwoColorBatch.h>
|
||||||
@ -111,7 +112,7 @@ bool AppDelegate::applicationDidFinishLaunching () {
|
|||||||
|
|
||||||
// create a scene. it's an autorelease object
|
// create a scene. it's an autorelease object
|
||||||
//auto scene = RaptorExample::scene();
|
//auto scene = RaptorExample::scene();
|
||||||
auto scene = CoinExample::scene();
|
auto scene = MixAndMatchExample::scene();
|
||||||
|
|
||||||
// run
|
// run
|
||||||
director->runWithScene(scene);
|
director->runWithScene(scene);
|
||||||
|
|||||||
@ -28,7 +28,7 @@
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
#include "CoinExample.h"
|
#include "CoinExample.h"
|
||||||
#include "BatchingExample.h"
|
#include "MixAndMatchExample.h"
|
||||||
|
|
||||||
USING_NS_CC;
|
USING_NS_CC;
|
||||||
using namespace spine;
|
using namespace spine;
|
||||||
@ -57,7 +57,7 @@ bool CoinExample::init () {
|
|||||||
else if (skeletonNode->getTimeScale() == 1)
|
else if (skeletonNode->getTimeScale() == 1)
|
||||||
skeletonNode->setTimeScale(0.3f);
|
skeletonNode->setTimeScale(0.3f);
|
||||||
else
|
else
|
||||||
Director::getInstance()->replaceScene(BatchingExample::scene());
|
Director::getInstance()->replaceScene(MixAndMatchExample::scene());
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
|
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
|
||||||
|
|||||||
87
spine-cocos2dx/example/Classes/MixAndMatchExample.cpp
Normal file
87
spine-cocos2dx/example/Classes/MixAndMatchExample.cpp
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Spine Runtimes License Agreement
|
||||||
|
* Last updated May 1, 2019. Replaces all prior versions.
|
||||||
|
*
|
||||||
|
* Copyright (c) 2013-2019, Esoteric Software LLC
|
||||||
|
*
|
||||||
|
* Integration of the Spine Runtimes into software or otherwise creating
|
||||||
|
* derivative works of the Spine Runtimes is permitted under the terms and
|
||||||
|
* conditions of Section 2 of the Spine Editor License Agreement:
|
||||||
|
* http://esotericsoftware.com/spine-editor-license
|
||||||
|
*
|
||||||
|
* Otherwise, it is permitted to integrate the Spine Runtimes into software
|
||||||
|
* or otherwise create derivative works of the Spine Runtimes (collectively,
|
||||||
|
* "Products"), provided that each user of the Products must obtain their own
|
||||||
|
* Spine Editor license and redistribution of the Products in any form must
|
||||||
|
* include this license and copyright notice.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY EXPRESS
|
||||||
|
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
||||||
|
* NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
|
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS
|
||||||
|
* INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY
|
||||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||||
|
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
#include "MixAndMatchExample.h"
|
||||||
|
#include "BatchingExample.h"
|
||||||
|
|
||||||
|
USING_NS_CC;
|
||||||
|
using namespace spine;
|
||||||
|
|
||||||
|
Scene* MixAndMatchExample::scene () {
|
||||||
|
Scene *scene = Scene::create();
|
||||||
|
scene->addChild(MixAndMatchExample::create());
|
||||||
|
return scene;
|
||||||
|
}
|
||||||
|
|
||||||
|
MixAndMatchExample::~MixAndMatchExample() {
|
||||||
|
delete skin;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MixAndMatchExample::init () {
|
||||||
|
if (!LayerColor::initWithColor(Color4B(128, 128, 128, 255))) return false;
|
||||||
|
|
||||||
|
skeletonNode = SkeletonAnimation::createWithBinaryFile("mix-and-match-pro.skel", "mix-and-match.atlas", 0.5);
|
||||||
|
skeletonNode->setAnimation(0, "dance", true);
|
||||||
|
|
||||||
|
// Create a new skin, by mixing and matching other skins
|
||||||
|
// that fit together. Items making up the girl are individual
|
||||||
|
// skins. Using the skin API, a new skin is created which is
|
||||||
|
// a combination of all these individual item skins.
|
||||||
|
SkeletonData* skeletonData = skeletonNode->getSkeleton()->getData();
|
||||||
|
skin = new (__FILE__, __LINE__) Skin("mix-and-match");
|
||||||
|
skin->addSkin(skeletonData->findSkin("skin-base"));
|
||||||
|
skin->addSkin(skeletonData->findSkin("nose/short"));
|
||||||
|
skin->addSkin(skeletonData->findSkin("eyes/eyelids-girly"));
|
||||||
|
skin->addSkin(skeletonData->findSkin("eyes/violet"));
|
||||||
|
skin->addSkin(skeletonData->findSkin("hair/brown"));
|
||||||
|
skin->addSkin(skeletonData->findSkin("clothes/hoodie-orange"));
|
||||||
|
skin->addSkin(skeletonData->findSkin("legs/pants-jeans"));
|
||||||
|
skin->addSkin(skeletonData->findSkin("accessories/bag"));
|
||||||
|
skin->addSkin(skeletonData->findSkin("accessories/hat-red-yellow"));
|
||||||
|
skeletonNode->getSkeleton()->setSkin(skin);
|
||||||
|
|
||||||
|
skeletonNode->setPosition(Vec2(_contentSize.width / 2, _contentSize.height / 2 - 200));
|
||||||
|
addChild(skeletonNode);
|
||||||
|
|
||||||
|
scheduleUpdate();
|
||||||
|
|
||||||
|
EventListenerTouchOneByOne* listener = EventListenerTouchOneByOne::create();
|
||||||
|
listener->onTouchBegan = [this] (Touch* touch, cocos2d::Event* event) -> bool {
|
||||||
|
if (!skeletonNode->getDebugBonesEnabled())
|
||||||
|
skeletonNode->setDebugBonesEnabled(true);
|
||||||
|
else if (skeletonNode->getTimeScale() == 1)
|
||||||
|
skeletonNode->setTimeScale(0.3f);
|
||||||
|
else
|
||||||
|
Director::getInstance()->replaceScene(BatchingExample::scene());
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
51
spine-cocos2dx/example/Classes/MixAndMatchExample.h
Normal file
51
spine-cocos2dx/example/Classes/MixAndMatchExample.h
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Spine Runtimes License Agreement
|
||||||
|
* Last updated May 1, 2019. Replaces all prior versions.
|
||||||
|
*
|
||||||
|
* Copyright (c) 2013-2019, Esoteric Software LLC
|
||||||
|
*
|
||||||
|
* Integration of the Spine Runtimes into software or otherwise creating
|
||||||
|
* derivative works of the Spine Runtimes is permitted under the terms and
|
||||||
|
* conditions of Section 2 of the Spine Editor License Agreement:
|
||||||
|
* http://esotericsoftware.com/spine-editor-license
|
||||||
|
*
|
||||||
|
* Otherwise, it is permitted to integrate the Spine Runtimes into software
|
||||||
|
* or otherwise create derivative works of the Spine Runtimes (collectively,
|
||||||
|
* "Products"), provided that each user of the Products must obtain their own
|
||||||
|
* Spine Editor license and redistribution of the Products in any form must
|
||||||
|
* include this license and copyright notice.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY EXPRESS
|
||||||
|
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
||||||
|
* NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||||
|
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS
|
||||||
|
* INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY
|
||||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||||
|
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef _MIXANDMATCHEXAMPLE_H_
|
||||||
|
#define _MIXANDMATCHEXAMPLE_H_
|
||||||
|
|
||||||
|
#include "cocos2d.h"
|
||||||
|
#include <spine/spine-cocos2dx.h>
|
||||||
|
|
||||||
|
class MixAndMatchExample : public cocos2d::LayerColor {
|
||||||
|
public:
|
||||||
|
static cocos2d::Scene* scene ();
|
||||||
|
|
||||||
|
CREATE_FUNC(MixAndMatchExample);
|
||||||
|
|
||||||
|
virtual bool init ();
|
||||||
|
|
||||||
|
virtual ~MixAndMatchExample();
|
||||||
|
|
||||||
|
private:
|
||||||
|
spine::SkeletonAnimation* skeletonNode;
|
||||||
|
spine::Skin* skin;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _MIXANDMATCHXAMPLE_H_
|
||||||
@ -168,6 +168,8 @@
|
|||||||
763105DA20BC1B9700927A1E /* VertexEffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 763104AE20BC1B5800927A1E /* VertexEffect.cpp */; };
|
763105DA20BC1B9700927A1E /* VertexEffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 763104AE20BC1B5800927A1E /* VertexEffect.cpp */; };
|
||||||
76798D1D22A95AB400F77964 /* ConstraintData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76798D1C22A95AB300F77964 /* ConstraintData.cpp */; };
|
76798D1D22A95AB400F77964 /* ConstraintData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76798D1C22A95AB300F77964 /* ConstraintData.cpp */; };
|
||||||
76798D1E22A95AEF00F77964 /* ConstraintData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76798D1C22A95AB300F77964 /* ConstraintData.cpp */; };
|
76798D1E22A95AEF00F77964 /* ConstraintData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76798D1C22A95AB300F77964 /* ConstraintData.cpp */; };
|
||||||
|
767D80E322B29F22000BD703 /* MixAndMatchExample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 767D80E022B29F22000BD703 /* MixAndMatchExample.cpp */; };
|
||||||
|
767D80E422B2A003000BD703 /* MixAndMatchExample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 767D80E022B29F22000BD703 /* MixAndMatchExample.cpp */; };
|
||||||
76A45BDE1E64396800745AA1 /* SkeletonTwoColorBatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76A45BDC1E64396800745AA1 /* SkeletonTwoColorBatch.cpp */; };
|
76A45BDE1E64396800745AA1 /* SkeletonTwoColorBatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76A45BDC1E64396800745AA1 /* SkeletonTwoColorBatch.cpp */; };
|
||||||
76A45BDF1E64396800745AA1 /* SkeletonTwoColorBatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76A45BDC1E64396800745AA1 /* SkeletonTwoColorBatch.cpp */; };
|
76A45BDF1E64396800745AA1 /* SkeletonTwoColorBatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76A45BDC1E64396800745AA1 /* SkeletonTwoColorBatch.cpp */; };
|
||||||
76AAA3C01D180F7C00C54FCB /* AppDelegate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3B31D180F7C00C54FCB /* AppDelegate.cpp */; };
|
76AAA3C01D180F7C00C54FCB /* AppDelegate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3B31D180F7C00C54FCB /* AppDelegate.cpp */; };
|
||||||
@ -364,6 +366,8 @@
|
|||||||
763104C120BC1B5E00927A1E /* ShearTimeline.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ShearTimeline.cpp; path = "../../../spine-cpp/spine-cpp/src/spine/ShearTimeline.cpp"; sourceTree = "<group>"; };
|
763104C120BC1B5E00927A1E /* ShearTimeline.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ShearTimeline.cpp; path = "../../../spine-cpp/spine-cpp/src/spine/ShearTimeline.cpp"; sourceTree = "<group>"; };
|
||||||
763104C220BC1B5E00927A1E /* TranslateTimeline.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TranslateTimeline.cpp; path = "../../../spine-cpp/spine-cpp/src/spine/TranslateTimeline.cpp"; sourceTree = "<group>"; };
|
763104C220BC1B5E00927A1E /* TranslateTimeline.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TranslateTimeline.cpp; path = "../../../spine-cpp/spine-cpp/src/spine/TranslateTimeline.cpp"; sourceTree = "<group>"; };
|
||||||
76798D1C22A95AB300F77964 /* ConstraintData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ConstraintData.cpp; path = "../../../spine-cpp/spine-cpp/src/spine/ConstraintData.cpp"; sourceTree = "<group>"; };
|
76798D1C22A95AB300F77964 /* ConstraintData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ConstraintData.cpp; path = "../../../spine-cpp/spine-cpp/src/spine/ConstraintData.cpp"; sourceTree = "<group>"; };
|
||||||
|
767D80E022B29F22000BD703 /* MixAndMatchExample.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MixAndMatchExample.cpp; sourceTree = "<group>"; };
|
||||||
|
767D80E222B29F22000BD703 /* MixAndMatchExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MixAndMatchExample.h; sourceTree = "<group>"; };
|
||||||
76A45BDC1E64396800745AA1 /* SkeletonTwoColorBatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkeletonTwoColorBatch.cpp; path = ../../src/spine/SkeletonTwoColorBatch.cpp; sourceTree = "<group>"; };
|
76A45BDC1E64396800745AA1 /* SkeletonTwoColorBatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkeletonTwoColorBatch.cpp; path = ../../src/spine/SkeletonTwoColorBatch.cpp; sourceTree = "<group>"; };
|
||||||
76A45BDD1E64396800745AA1 /* SkeletonTwoColorBatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonTwoColorBatch.h; path = ../../src/spine/SkeletonTwoColorBatch.h; sourceTree = "<group>"; };
|
76A45BDD1E64396800745AA1 /* SkeletonTwoColorBatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonTwoColorBatch.h; path = ../../src/spine/SkeletonTwoColorBatch.h; sourceTree = "<group>"; };
|
||||||
76AAA3B31D180F7C00C54FCB /* AppDelegate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AppDelegate.cpp; sourceTree = "<group>"; };
|
76AAA3B31D180F7C00C54FCB /* AppDelegate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AppDelegate.cpp; sourceTree = "<group>"; };
|
||||||
@ -539,6 +543,8 @@
|
|||||||
46880B8319C43A87006E1F66 /* Classes */ = {
|
46880B8319C43A87006E1F66 /* Classes */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
767D80E022B29F22000BD703 /* MixAndMatchExample.cpp */,
|
||||||
|
767D80E222B29F22000BD703 /* MixAndMatchExample.h */,
|
||||||
76D1BFDF2029E35200A0272D /* SkeletonRendererSeparatorExample.cpp */,
|
76D1BFDF2029E35200A0272D /* SkeletonRendererSeparatorExample.cpp */,
|
||||||
76D1BFDE2029E35100A0272D /* SkeletonRendererSeparatorExample.h */,
|
76D1BFDE2029E35100A0272D /* SkeletonRendererSeparatorExample.h */,
|
||||||
76D520E41EB362DD00572471 /* CoinExample.cpp */,
|
76D520E41EB362DD00572471 /* CoinExample.cpp */,
|
||||||
@ -871,6 +877,7 @@
|
|||||||
503AE10017EB989F00D1A890 /* AppController.mm in Sources */,
|
503AE10017EB989F00D1A890 /* AppController.mm in Sources */,
|
||||||
763104E820BC1B5E00927A1E /* BoundingBoxAttachment.cpp in Sources */,
|
763104E820BC1B5E00927A1E /* BoundingBoxAttachment.cpp in Sources */,
|
||||||
763104C720BC1B5E00927A1E /* DrawOrderTimeline.cpp in Sources */,
|
763104C720BC1B5E00927A1E /* DrawOrderTimeline.cpp in Sources */,
|
||||||
|
767D80E322B29F22000BD703 /* MixAndMatchExample.cpp in Sources */,
|
||||||
763104F520BC1B5E00927A1E /* MeshAttachment.cpp in Sources */,
|
763104F520BC1B5E00927A1E /* MeshAttachment.cpp in Sources */,
|
||||||
763104E520BC1B5E00927A1E /* TwoColorTimeline.cpp in Sources */,
|
763104E520BC1B5E00927A1E /* TwoColorTimeline.cpp in Sources */,
|
||||||
763104D420BC1B5E00927A1E /* IkConstraint.cpp in Sources */,
|
763104D420BC1B5E00927A1E /* IkConstraint.cpp in Sources */,
|
||||||
@ -920,6 +927,7 @@
|
|||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
767D80E422B2A003000BD703 /* MixAndMatchExample.cpp in Sources */,
|
||||||
76798D1E22A95AEF00F77964 /* ConstraintData.cpp in Sources */,
|
76798D1E22A95AEF00F77964 /* ConstraintData.cpp in Sources */,
|
||||||
7631059E20BC1B9700927A1E /* Animation.cpp in Sources */,
|
7631059E20BC1B9700927A1E /* Animation.cpp in Sources */,
|
||||||
7631059F20BC1B9700927A1E /* AnimationState.cpp in Sources */,
|
7631059F20BC1B9700927A1E /* AnimationState.cpp in Sources */,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user