2011-03-25 7 views
1

아이폰 앱을 만들고 있는데, 60 분마다 - (void) gameLoop을 호출하는 NSTimer에서 작동합니다. 여기 게임은있다 .Loop';'앞에 ';'가 올 것으로 예상 됨 토큰 오류?

-(void)gameLoop { 

paratrooperTimer += 1; 

if (gameState == KGameStateBegin) { 
    BtnStart.hidden = 0; 
    BtnResume.hidden = 1; 
    BtnPause.hidden = 1; 
} 
else if (gameState == KGameStateRunning) { 

    BtnStart.hidden = 1; 
    BtnPause.hidden = 0; 

    [self playGameLoop]; 
} 
else if (gameState == KGameStatePaused) { 

    BtnResume.hidden = 0; 
    BtnPause.hidden = 1; 
} 
else if (gameState == KGameStateGameOver) { 

    [self endGame]; 
} 
else if (paratrooperTimer == 120) { 

    (paratrooperTimer = 0); 
    [self spawnParatrooper]; 

} 



} 

'앞에'; ''이 (가) 있습니다. 토큰 "은 모든 if 문과 ParatrooperTimer + = 1 행에 있습니다.

GameState는 Integer이며 모든 KGameState ...입니다. 제발 도와주세요! 덕분에 무리가

+0

여기 제출 한 코드에는 중괄호 불균형이 있습니다. 코드가 불균형 해 지거나 부분 복사 및 붙여 넣기로 인해 우리가 말할 수 없기 때문입니다. 여기에 입력 한 내용은 구문 오류입니다. –

답변

1

당신은 아마 어딘가에 - (void)gameLoop 위의 불균형 괄호를, 또는 어쩌면 당신은 당신의 .H 파일에 메소드 선언 - (void)gameLoop;에서 세미콜론을 왼쪽 (그러나 나는 당신에게 다른 오류 메시지를 줄 것이라고 생각한다).

0

는이 같은 함수의 서명 (NSTimer *) aTimer을 추가해야합니다 :

-(void)gameLoop :(NSTimer *) aTimer 

[NSTimer scheduleWithTimeInterval...의 선택에 세미콜론 추가해야합니다 : 함수에 관해서는

@selector(gameLoop:) 

을 :

마지막 if 문에이 라인이 무엇입니까? 왜 거기에 괄호가 필요합니까?

(paratrooperTimer = 0); 

아마이 컴파일러 오류

2

이 질문에 대해 무엇 아닙니다의 원인이지만, 당신은 내가 이전에 실행 한 것을 나를 위해 붉은 깃발을 제기 한 당신은 것 아마 약간의 사전 경고에 대해 감사 할 것입니다.

NSTimer는 이벤트 루프가 끝날 때 발생합니다. 그것은 메트로놈이 아닙니다. 호출 될 때 호출되고, 전혀 규칙 적이 지 않을 수 있습니다. 앱을 차단하는 긴 프로세스로 인해 NSTimer가 제 시간에 해고되는 것을 방지 할 수 있습니다. 또한 NSTimer의 최대 해상도는 50-100ms입니다 (문서 당). 그래서 BEST의 경우, 초당 20 번 발사 될 것이고, 당신은 그것보다 세 배 더 정밀한 해상도를 요구할 것입니다.

저해상도의 경우 NSTimer는 훌륭하지만 빠르게 원하는만큼 빠르게 맥박을 가할 수 있습니다. 그렇다면 실제로 초당 60 프레임이 필요합니까?

0

괄호 타이핑 또는 유효하지 않은 타이머 서명이 의심됩니다. 타이머

예 : timerHandler는 다음과 같이 정의된다

self.timer = [NSTimer scheduledTimerWithTimeInterval:60.0 
               target:self 
              selector:@selector(timerHandler:) 
              userInfo:nil 
              repeats:YES]; 

가 :

어쨌든
- (void)updateTimeView:(id)inTimer; 

, 왜 당신이 switch-case 문을 사용하지 않는? if을 많이 사용하면 코드의 가독성을 유지하는 데 도움이되므로 괄호 오타를 더 쉽고 빠르게 찾을 수 있습니다. Switch-case explanation

관련 문제