2012-03-29 2 views
0

내 게임에 타이머를 추가하려고 노력 중이므로 레벨 재생에 얼마나 오래 머물렀는 지 알 수 있습니다.아이폰 게임에서 레벨을위한 타이머 만들기

bool showTimer = YES; 
NSDate startDate; 
UILabel timerLabel; // initialized in viewDidLoad 

    -(void) showElapsedTime: (NSTimer *) timer { 
     if (showTimer) { 
      NSTimeInterval timeSinceStart; 

      if(!startDate) { 
       startDate = [NSDate date]; 
      } 

      timeSinceStart = [[NSDate date] timeIntervalSinceDate:startDate]; 
      NSString *intervalString = [NSString stringWithFormat:@"%.0f",timeSinceStart]; 
      timerLabel.text = intervalString; 

      if(stopTimer) {//base case 
       [timer invalidate]; 
      } 
     } 
    } 

    - (void) startPolling { 
     [NSTimer scheduledTimerWithTimeInterval:0.1f target:self selector:@selector(showElapsedTime:) userInfo:nil repeats:YES]; 
    } 

내가있는 viewDidLoad에서 startPolling 방법을 시작 : 필자 내가 타이머에게 다음과 같은 방법을 초기화 할 수 있다는 것을 알아 냈다. 앱을 실행하면 타이머가 표시되고 시간이 추적되지만 앱을 종료하고 다시 입력하면 타이머가 일시 중지되지 않습니다. 또한 다른보기 (옵션 메뉴와 같은)로 이동 한 다음이보기로 돌아 오는 것을 처리하는 방법을 잘 모르겠습니다. 나는 NSDefaults와 NSCoding을 이해하고 모든 레벨에 대한 plist에 별도의 키 - 값 쌍을 유지하면서 코딩 객체로 타이머에 현재 값을 저장할 수있는 방법을 알았지 만 성가신 것 같습니다.

사용자가 일정 기간 동안 머문 시간을 추적하는 더 좋은 방법이 있습니까?

답변

1

매 시간마다 계산을 시작하는 대신 (현재 시간에서 시작 시간 빼기) 경과 시간 만 고려하면 NSTimeInterval elapsedTime과 같은 변수가 있으므로 0부터 시작하여 타이머가 작동합니다. (예제 에서처럼 0.1 초로 추적하려면 표시하기 전에 10으로 나누십시오.) 이렇게하면 원하는 시점에 일시 중지 할 수 있으며 다시 시작할 때 이전 위치에서 계속할 수 있습니다 .

관련 문제