- 작성시간 : 2011/12/27 17:25
- 퍼머링크 : cozycoz.egloos.com/10825098
- 덧글수 : 0
이번에 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로 해준다.
우웅.





최근 덧글