cocos2dで経過時間を表示(更新)したい

CCNodeのscheduleUpdateで起動させたupdateメソッドで受け取る時間を足して経過時間とした。ミリ秒、秒、分を別々に表示したくて計算で出したがもっといい書き方があると思う(特にミリ秒)。

ミリ秒について

  • self.playTime – floor(self.playTime)で小数点以下の部分を取得
  • (self.playTime – floor(self.playTime))*100で整数部(2桁)が目的のミリ秒
  • floor((self.playTime – floor(self.playTime))*100)で整数部(2桁)だけを切り出し

ラベルの更新については、CCLabelTTFクラスのsetStringメソッドを使用。cocos2dのFPS表示っぽい箇所(CCDirectorクラスのshowStatsメソッド)を参照した。

// ゲームループ
- (void)update:(ccTime)delta
{
    // ...

    // プレイ時間の表示
    self.playTime += delta; // プレイ時間の更新
    int msec = floor((self.playTime - floor(self.playTime))*100);
    int sec = (int)floor(self.playTime) % 60;
    int min = (int)floor(self.playTime) / 60;
    CCLabelTTF* labelPlayTime = (CCLabelTTF*)[self.baseLayer getChildByTag:kTagPlayTime];
    NSString* strTime = [[NSString alloc] initWithFormat:@"%02d:%02d:%02d", min, sec, msec];
    [labelPlayTime setString:strTime];
    [strTime release];
}

参考サイト

cocos2d for iPhoneレッスンノート
加藤寛人 佐藤伸吾
ラトルズ
売り上げランキング: 152,450

関連エントリー

  1. cocos2dで画像(スプライト)を移動させたい
  2. cocos2dで画像(スプライト)を縦(横)方向に拡大したい
  3. cocos2dでパーティクルを使いたい
  4. cocos2dでiOSアプリをつくる
  5. Xcodeを4.5にバージョンアップ(iOSのGame Center対応アプリをリリース申請)
This entry was posted in 未分類 and tagged , , . Bookmark the permalink.