2011-04-07 2 views
0

내가 응용 프로그램이 시작될 때 재생됩니다 내 응용 프로그램의 사운드를 가지고부울 절약 문제

을 편집. 더 내가 연주하고 소리를 중지하는 두 가지 방법이있어 :

-(void)playBgMusic { 

NSString *path = [[NSBundle mainBundle] pathForResource:@"bgmusic" ofType:@"aif"]; 
theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL]; 
theAudio.delegate = self; 
[theAudio play]; 
[defaults setBool:NO forKey:@"isQuiet"]; } 


-(void)stopMusic { 

[theAudio stop]; 
[defaults setBool:YES forKey:@"isQuiet"]; } 

지금은있어 다른 viewControllers을 내 MAINVIEW에 정지 버튼있다을/음악 (처리 여부 음악이 재생 여부에 따라 달라집니다 시작).

은 그래서있어 :

-(IBAction)check { 

isquiet = [defaults boolForKey:@"isQuiet"]; 

if (isquiet == YES) { 

    [self playBgMusic]; 

    // Change button to indicate music is playing 

} 

else { 

    [self stopMusic]; 

    // Change the button to indicate music has stopped... 
} 

}

지금 문제가있다. 앱이 시작될 때 사운드가 재생 된 후 버튼을 누르면 사운드가 중지되지만 다시 시작할 수는 없습니다. 나는 NSLogs를 코드에 넣었고 stopButton을 누른 후에 BOOL이 여전히 NO라는 것을 알았다.

내 실수는 어디 갔지?

답변

0

이것은 엄밀히 말하면 답이 아니다, 그러나 희망이 바른 길에 당신을 설정합니다 ...

이 (중 NSLog(...)를 통해 또는 로깅 중단 점 추가) 일부 로깅을 추가 NO로하고 YES의 경우 isquiet의 값을 출력하는 위의 코드 그런 다음 다른 시나리오에서 단추를 누를 때 호출되는 코드 경로를 볼 수 있습니다.

+0

실제로 답변이 없으므로 주석으로 처리해야합니다. 나는 이것을 시험해 보았다. bool은 항상 가지고 있어야하는 가치가 있습니다. 문제는 다른 지점에 있다고 생각합니다. – Leon

+0

@ Leon : 당신은 절대적으로 맞습니다. 이것은 "대답"의 정의에 엄격히 해당하지 않는 해결책으로 당신을 안내하려는 시도였습니다. 나는 사람들이 당신을 도우려고 노력했다는 느낌이 들었고, 이것이 실제로 당신의 문제를 해결할 수 있다고 생각했지만, 당신은 분명히 그들이 규범을 정확하게 따르는 것이 더 중요하다고 생각합니다. –

0

올바른 트랙에 있습니다. 누락 된 유일한 것은 실제로 재생을 시작/중지 할 때 bool 값을 NSUserDefaults에 다시 저장하는 것이므로 버튼을 클릭하고 읽을 때마다 올바른 값을 얻습니다.

:
[userDefaults setBool:NO forKey:@"isQuiet"]; 

그리고 당신의 spotBgMusic 방법

는 다음을 추가

-(IBAction)check 
{ 
    BOOL isQuiet = [userDefaults boolForKey:@"isQuiet"]; 
    if (isQuiet) 
    { 
     [self playBgMusic]; 
     // Change button to indicate music is playing 
    } else { 
     [self stopBgMusic]; 
     // Change the button to indicate music has stopped... 
    } 
} 

를 그런 다음 playBgMusic 방법에 다음을 추가 : 도움이된다면

이 시도를주고 참조

[userDefaults setBool:YES forKey:@"isQuiet"]; 
+0

여전히 작동하지 않지만 문제가 발생했습니다. 수정 된 질문에서 확인할 수 있습니다. – Leon