我一直在研究這個項目一段時間,但是我遇到了一個我無法弄清楚的問題。使用NSUserDefaults和AVAudioPlayer製作靜音切換按鈕
首先,我有一個複選框按鈕,將其作爲BOOL值保存到NSDefaultUser。它只是按下一次時保存值YES,如果再次按下則保存爲NO等...此複選框按鈕正常工作,就像正常的自定義複選框按鈕一樣。
我想通過使用此複選框按鈕來使我的應用程序中的所有聲音靜音。
我打我的聲音通過調用方法如:
- (void)startMusic1
{
NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/music1.mp3", [[NSBundle mainBundle] resourcePath]]];
NSError *error;
AVAudioPlayer *audioPlayer;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
audioPlayer.numberOfLoops = -1;
if (audioPlayer == nil)
NSLog(@"Error: %@", [error description]);
else
[audioPlayer play];
}
因此,對於每一個聲音我想在我的應用程序玩,我可以重複這樣的:
- (IBAction)playButton:(id)sender
{
NSUserDefaults *default = [NSUserDefaults standardUserDefaults];
if(![default boolForKey:@"isMuted"])
{
[self startMusic1];
}
}
但是,這得到了重複,尤其是因爲我必須爲我的項目管理許多不同的聲音(以及播放聲音的不同按鈕),而且重複這些步驟似乎並不重要。我試着用AVAudioPlayer的一個子類創建一個新類,並使用 - (BOOL)play方法搞了幾天,但是我無法設法得到我想要的結果。我研究並找到像Disable in App sounds這樣的帖子,但這仍然不會。
我對整體編程非常新穎,所以如果有人能給我一點啓發,那將會很棒。