2

我正在尝试在 cocos2d 游戏中显示一个计时器,该计时器显示用户在关卡上花费的分钟数:秒数:毫秒数。我搜索了示例,发现我绝对不应该使用 NSTimer。我知道我应该使用 CCTimer 类,但我很难找到像样的例子。

4

2 回答 2

6
//Declare this in interface
CCLabelTTF          *mTimeLbl;
float               mTimeInSec;

//在onEnter中初始化这个

 mTimeInSec = 0.0f;
 [self schedule:@selector(tick:)];

//使用的函数

-(void)tick:(ccTime)dt
{
    if(self.isGamePaused || self.isGameOver)
        return;

    mTimeInSec +=dt;

    float digit_min = mTimeInSec/60.0f;
    float digit_hour = (digit_min)/60.0f;
    float digit_sec = ((int)mTimeInSec%60);

    int min = (int)digit_min;
    int hours = (int)digit_hour;
    int sec = (int)digit_sec;

    [mTimeLbl setString:[NSString stringWithFormat:@"%.2d:%.2d:%.2d",hours, min,sec]];

}
于 2013-05-21T04:11:32.647 回答
0

在您的CCLayer类中,只需创建一个保存数据的变量,并通过计时器或正常更新来增加它。我给你一些示例代码,但这只是为了给你一个想法:

static long ticks = 0;

-(void)timerTick
{
  ++ticks;
  [(CCLabelBMFont*)[self getChildByTag:TAG_TIMER_STRING] setString:[NSString stringWithFormat:@"%lu"]];
}

-(id)init {
  ..
  [self schedule:@selector(timerTick) interval:1.0];
}
于 2013-05-21T04:10:47.370 回答