[cocos2d-x] `CCProgressTimer` クラス - ローディングなどのUIを簡単に実装できるクラス

Loadingの進捗状況を表示したりとか、時間ゲージだとかそういう要素を表現するのに便利な CCNode のサブクラス、CCSprite のラッパー。プログレスタイマーを表示しているもの自体はクラスメンバの CCSprite

  CCProgressTimer *pTimer;
  pTimer = CCProgressTimer::progressWithFile("Icon.png");
  // pTimer = CCProgressTimer::progressWithTexture(CCTextureCache::sharedTextureCache()->addImage("ファイル名"));

  // プログレスタイマーのタイプ を設定する
  /*
   typedef enum {
   /// Radial Counter-Clockwise 
   kCCProgressTimerTypeRadialCCW,
   /// Radial ClockWise
   kCCProgressTimerTypeRadialCW,
   /// Horizontal Left-Right
   kCCProgressTimerTypeHorizontalBarLR,
   /// Horizontal Right-Left
   kCCProgressTimerTypeHorizontalBarRL,
   /// Vertical Bottom-top
   kCCProgressTimerTypeVerticalBarBT,
   /// Vertical Top-Bottom
   kCCProgressTimerTypeVerticalBarTB,
   } CCProgressTimerType;
   */
  cocos2d::CCProgressTimerType type;
  type = kCCProgressTimerTypeRadialCCW;
  pTimer->setType(type);

  // タイマーの値をセットする 0.0f ~ 100.0f
  // この値を update メソッドなどで更新しなければタイマーは変化しない
  pTimer->setPercentage(0.0f);
  scheduleUpdate();

  // 設置する位置など
  // pTimer->setAnchoPointでanchorPoint を変更したらよくわからない事になったので変更しないほうがいいっぽい
  pTimer->setPosition(ccp(100,100));

  // スプライトを別のものに差し替えることができる
  pTimer->setSprite(CCSprite::spriteWithFile("Icon@2x.png"));

  // 表示される画像のブレンドモードなどを変更したいなら Sprite を取り出してから設定すること
  pTimer->getSprite()->setColor(ccRED);

  // 親ノードに追加
#define kTagOfTimer 777
  addChild(pTimer, 100, kTagOfTimer);

update メソッドなどで で更新するなりしないと何も起こらないよ

void HelloWorld::update(ccTime dt) {
  CCProgressTimer *pTimer = (CCProgressTimer *) getChildByTag(kTagOfTimer);

  float nextPercentage = pTimer->getPercentage() + dt * 20;
  if ( nextPercentage > 100 ) nextPercentage = 0;

  pTimer->setPercentage(nextPercentage);
}
Share