버젼 : cocos2d-x 3.1
cocostudio 를 사용 하여 AnimationEditor 작업 후 파일을 Export 하면 3개의 파일이 생성 되는 것 까지는 생략 하겠습니다.
Size visibleSize = Director::getInstance()->getVisibleSize();
// 파일을 먼저 로딩 후 //
cocostudio::ArmatureDataManager::getInstance()->addArmatureFileInfo("test.ExportJson");
// 애니메이션 생성 한후 //
Armature *armature = cocostudio::Armature::create("test");
armature->setPosition(Vec2(visibleSize.width / 2 , visibleSize.height / 2));
armature->setScale(5.0f);
// 몇번째 애니메이션을 실행 할것인지 인덱스로 해도 되고 아니면 애니메이션 명으로 실행 해도 됨
// armature->getAnimation()->play("test");
armature->getAnimation()->playWithIndex(1);
// 애니메이션 속도 조절 가능 RPG 게임 2배속 기능 참고
armature->getAnimation()->setSpeedScale(0.1f);
//애니메이션 시작 중간 끝났을때 콜백 받을수 있음
armature->getAnimation()->setMovementEventCallFunc(CC_CALLBACK_0(LobbyScene::animationEvent, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));
//각 프레임당 이벤트 메서드가 있을시 콜백 받음
armature->getAnimation()->setFrameEventCallFunc(CC_CALLBACK_0(LobbyScene::onFrameEvent, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4));
this->addChild(armature);
======= call back func ======
void ********::onFrameEvent(Bone *bone, const std::string& evt, int originFrameIndex, int currentFrameIndex)
{
CCLOG("(%s) emit a frame event (%s) at frame index (%d).", bone->getName().c_str(), evt.c_str(), currentFrameIndex);
if((__String::createWithFormat("%s",evt.c_str()))->isEqual(StringMake("fire"))) {
log("Event Start");
}
if(strcmp(evt.c_str(),"event")) {
log("Event Start");
}
}
void ************::animationEvent(Armature *armature, MovementEventType movementType, const std::string& movementID)
{
if (movementType == LOOP_COMPLETE)
{
if (movementID == "test1")
{
log("test complete");
}
}
}
이상입니다.~
-------------------------
또한 지금 작업 하고 있는 프로젝트에서 따로 h파일을 하나 생성 하여 cocos2d관련 h파일을 다 포함 하여 작업을 진행 중입니다.
test.h
#include "cocos2d.h"
#include "cocostudio/CocoStudio.h"
#if(CC_PLATFORM_ANDROID == CC_TARGET_PLATFORM)
#include "extensions/cocos-ext.h"
#elif(CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
#include "cocos-ext.h"
#endif
using namespace cocos2d;
using namespace std;
using namespace extension;
using namespace cocostudio;
--------------------------
이 상태에서 각 코코스 및 코코스 스튜디오를 작업 하실때 #include "test.h" 만 추가 하셔서 사용 하시면 됩니다.