Shake.cpp


Shake.h



프로젝트에 추가 후 


사용 방법


    Shake *shake = Shake::actionWithDuration(0.5f, 30);

    this->runAction(shake);


이상입니다.


참고 : http://singleton.tistory.com/375



버젼  : 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" 만 추가 하셔서 사용 하시면 됩니다.


EGLView::getInstance()->setDesignResolutionSize(width , height, policy)




EXACT_FIT

 - 비율을 고려하지 않고 디자인된 해상도를 화면에 맞추어 그린다.비율에 의한 왜곡이 발생할 수 있다.게임 화면이 늘어 나거나

   압축되어 보일수 있다.


NO_BORDER

 - 비율을 지키며 디자인된 해상도를 화면에 가득차게 그린다.왜곡은 발생하지 않으나 게임 화면의 일부가 단말기 화면 밖으로      잘려 보일 수 있다.


SHOW_ALL

 - 비율을 지키며 디자인된 해상도를 화면에 맞추어 그려준다.디자인된 리소스와 다른 비율의 화면에서는 화면의 양쪽 사이드

   에 검은색의 Border가 등장하게 된다.


FIXED_HEIGHT

  - 디자인된 해상도의 높이에 맞추어 단말기 화면의 비율에 따라 높이를 결정한다. 왜곡은 발생하지 않으나 비율이 고정되지 않     기 때문에 비율에 상관없이 정상적으로 동작하는 것을 개발자가 보장해 주어야 한다.


FIXED_WIDTH

  - 디자인된 해상도의 넓이에 맞추어 단말기 화면의 비율에 따라 넓이를 결정한다. 이하 FIXED_HEIGHT와 동일

+ Recent posts