336 280 광고


cocos2d-x CCProgressTimer 프로그레스바 구현 cocos2d-x



이번에 cocos2d-x 프로젝트를 진행하게 되어,

조금씩 자료를 모아두려고 한다.

우선, 타임게이지가 깎이는 부분을 구현하려고 하는데.
(에너지바, 타임게이지 등등)


CCProgressTimer 를 활용하면 되는데,


////////초기화 부분

CCProgressTimer* m_progressTimeBar = CCProgressTimer::progressWithFile("TimerImage.png");

//프로그레스바 타입을 결정. 오른쪽에서 왼쪽으로 줄어드는 프로그레스바 선택
 m_progressTimeBar->setType(kCCProgressTimerTypeHorizontalBarLR);

//m_winSize는 CCDirector::sharedDirector()->getWinSize();
 m_progressTimeBar->setPosition( ccp(m_winSize.width/2, m_winSize.height/4));

//시작 게이지를 100퍼센트로 세팅
 m_progressTimeBar->setPercentage(100.0f);

 this->addChild(m_progressTimeBar, tagUI_3, tagProgressBar);
/////////

////////업데이트 부분
//1초당 한번 호출되는 함수에 작성하든, 타이머 안에 작성하든 하면 됨.

void SomeClass::SomeFunc(ccTime dt)
{
    //스케쥴러에 등록된 함수에 작성.
    float mCurrPercentage = m_progressTimeBar->getPercentage();
    m_progressTimeBar->setPercentage(mCurrPercentage-dt);

    //기타 예외, 종료처리
}

void SomeClass::TimeItemFunc(void)
{
    //아이템 사용시 증가    
    float mCurrPercentage = m_progressTimeBar->getPercentage();
    m_progressTimeBar->setPercentage(mCurrPercentage + (float)addPercentage);

    
}

대충 이렇게 하면 돌아가는데,

그냥 액션을 줄 수도 있다.

////////초기화 동일

////////액션 시작

//프로그레스 애니메이션이 종료되면 cbFunc()가 호출된다.
CCCallFunc *cbTimerFinish = CCCallFunc::actionWithTarget(this, callfunc_selector(SomeClass::cbFunc) );


//120초를 100퍼센트로, 0퍼센트가 될 때까지 액션
CCProgressFromTo *progressToZero = CCProgressFromTo::actionWithDuration( 120.0f,100.0f, 0.0f);

//액션실행->함수호출이 순서대로 진행되도록 시퀀스 등록
//시퀀스를 사용하지 않으면, 액션 실행 후 바로 함수로 진입한다.
//액션이 종료된 후 뭔가를 취하려면 시퀀스를 사용해준다. 마지막은 NULL
CCFiniteTimeAction *sequence = CCSequence::actions(progressToZero, cbTimerFinish , NULL);


m_progressTimeBar->runAction(sequence);

이러면 지속적으로 프로그레스바가 깎이는 애니메이션을 나타낼 수 있다.

물론 콜백 함수를 선언해줘야하고,
CCCallFunc 의 경우 파라미터는 void로 해준다.


우웅.

공유하기 버튼

싸이월드 공감트위터페이스북
 

1 2 3 4 5 6 7 8 9 10 다음


HanRSS Count

125 125

180 90 컨텐츠위젯


180 150 광고

방문자 위치