I use this for a timer
in the init:
timeLevelStarted = [[NSDate date] timeIntervalSince1970];
timeForLevel = 180;
timeLeft = timeForLevel;
// Create a label for time left purposes
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
//ipad
_timeLabel = [CCLabel labelWithString:@"Time Left: 0" dimensions:CGSizeMake(240, 50) alignment:UITextAlignmentLeft fontName:@"Arial" fontSize:25.0];
}
else
{
//ipod
_timeLabel = [CCLabel labelWithString:@"Time Left: 0" dimensions:CGSizeMake(120, 25) alignment:UITextAlignmentLeft fontName:@"Arial" fontSize:15.0];
}
_timeLabel.color = ccc3(0,0,0);
//if (gameTypeChoice == 1 || gameTypeChoice == 2) {_label.position = ccp(winSize.width-60, winSize.height-(_label.contentSize.height/2));}
//else if (gameTypeChoice == 3) {_label.position = ccp(191, winSize.height-(_label.contentSize.height/2));}
//_pointsLabel.position = ccp(_pointsLabel.contentSize.width/2, winSize.height-(_pointsLabel.contentSize.height/2));
_timeLabel.position = ccp(winSize.width-_timeLabel.contentSize.width/2, winSize.height-(_timeLabel.contentSize.height/2)-13);
[self changeTimeLabel];
[self addChild:_timeLabel];
then call this in the update:
if ([self changeTimeLabel] == 0) {
[self unschedule:@selector(gameLogic:)];
[self unschedule:@selector(gameLogic2:)];
[self unschedule:@selector(gameLogicSpecials:)];
int numberOfEnemiesLeft = 0;
// check for enemies left
for (enemy *enemyCheck in _enemies) {
numberOfEnemiesLeft++;
//NSLog(@"enemy here");
}
if (numberOfEnemiesLeft == 0) {
NSLog(@"game is over");
}
}
and here is my function for it
-(int)changeTimeLabel {
double curTime = [[NSDate date] timeIntervalSince1970];
timeLeft = timeForLevel - (int)(curTime - timeLevelStarted);
if (timeLeft < 0) {
timeLeft = 0;
}
//NSLog([NSString stringWithFormat:@"%i", timeLeft]);
int minutesLeft = timeLeft/60, secondsLeft = timeLeft%60;
if (secondsLeft < 10) {
[_timeLabel setString:[NSString stringWithFormat:@"Time Left: %i:0%i", minutesLeft, secondsLeft]];
} else {
[_timeLabel setString:[NSString stringWithFormat:@"Time Left: %i:%i", minutesLeft, secondsLeft]];
}
return timeLeft;
}
I hope this helps a lot :)