본문 바로가기
프로그래밍/cocos2d-x

cocos2d-x 애니메이션

by -현's- 2013. 5. 31.
반응형


●그림 파일을 입출력 할때 시스템 비용이 많이 든다. 그래서 여러개의 그림파일을 하나의 파일(plist)로 만들어서 불러들이고 plist에서 필요한 그림파일을 불러들이는게 좋다. 개별 스프라이트를 불러들이는 것보다 plist를 통해 불러들이면 리소스 관리가 쉽고 편하다.






●스프라이트 배치 노드를 이용한 애니메이션


-  HelloWorld.cpp


#include "HelloWorldScene.h"


using namespace cocos2d;


CCScene* HelloWorld::scene()

{

    CCScene *scene = CCScene::create();

    

    HelloWorld *layer = HelloWorld::create();


    scene->addChild(layer);


    return scene;

}


bool HelloWorld::init()

{

    if ( !CCLayerColor::initWithColor(ccc4(255, 255, 255, 255)) )

    {

        return false;

    }


    /////////////////////////////


    CCSize s = CCDirector::sharedDirector()->getWinSize();

    

    // 스프라이트 시트의 위치정보 파일을 읽어들인다.

    CCSpriteFrameCache *cache = CCSpriteFrameCache::sharedSpriteFrameCache();

    cache->addSpriteFramesWithFile("animations/grossini.plist");


    

    CCArray* animFrames = CCArray::createWithCapacity(15);

    

    char str[100] = {0};

    for(int i = 1; i < 15; i++)

    {

        sprintf(str, "grossini_dance_%02d.png", i);

        CCSpriteFrame* frame = cache->spriteFrameByName( str );

        animFrames->addObject(frame);

    }

    

    //첫번째 프레임으로 스프라이트를 만든다.

    CCSprite *pMan = CCSprite::createWithSpriteFrameName("grossini_dance_01.png");

    pMan->setPosition( ccp( 50, s.height/2) );

    this->addChild(pMan);

    

    // 애니메이션 만들기


    CCAnimation* animation = CCAnimation::createWithSpriteFrames(animFrames, 0.5f);

    CCAnimate *animate = CCAnimate::create(animation);


    CCActionInterval* myActionForward = CCMoveBy::create(2, ccp(400, 0));

    CCActionInterval* myActionBack = myActionForward->reverse();

    CCFiniteTimeAction* myAction = CCSequence::create(myActionForward, myActionBack, NULL);

    

    

    CCAction* action = CCSpawn::create(animate, myAction, NULL);


    CCActionInterval* rep1 = (CCActionInterval*)action;

    CCAction* rep2 = CCRepeatForever::create(rep1);


    pMan->runAction(rep2);

   

    return true;

}













반응형

'프로그래밍 > cocos2d-x' 카테고리의 다른 글

cocos2d-x 터치(Touch)  (0) 2013.06.01
cocos2d-x 심플오디오엔진(SimpleAudioEngine)  (0) 2013.05.31
cocos2d-x 트랜지션(Transition) 추가,삭제,교체  (0) 2013.05.30
cocos2d-x 액션3  (0) 2013.05.29
cocos2d-x 액션2  (0) 2013.05.28

댓글