2011-12-28 73 views
1

我已經搜索了這個答案,但沒有找到它。AVAudioPlayer - 屏蔽按鈕

當我的iPhone應用程序啓動時,我會在後臺播放音樂。但我想要一個按鈕,以便用戶可以將音樂靜音。在應用程序中也有聲音效果,所以滑動設備側面的靜音按鈕不會將其切斷。

這是我用於AVAudioPlayer的當前代碼。

- (void)viewDidLoad{ 
#if TARGET_IPHONE_SIMULATOR 
    //here code for use when execute in simulator 
#else 
    //in real iphone 
    NSString *path = [[NSBundle mainBundle] pathForResource:@"FUNKYMUSIC" ofType:@"mp3"]; 
    AVAudioPlayer *TheAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL]; 
    TheAudio.delegate = self; 
    [TheAudio play];  
    TheAudio.numberOfLoops = -1; 
#endif 
} 

任何人都可以幫助我一個簡單的按鈕所需的代碼,只需停止音樂,並重新啓動它。

謝謝先進。

回答

0

將這個代碼在viewcontroller.h文件:

-(IBAction) btnStop:(id)sender; 

將這個代碼在viewcontroller.m文件:

-(IBAction) btnStop:(id)sender { 
    [TheAudio stop]; 
    //Whatever else you want to do when the audio is stopped 
} 

在界面生成器,一個按鈕連接到這個動作,所以當它被點擊時,這個動作將被調用。 這應該會讓音樂停止。

+0

如何將代碼放入按鈕?我正在使用nib文件btw。謝謝你的信息。 – user282076 2011-12-28 14:24:26

+0

使用更好的代碼編輯 – DGund 2011-12-28 14:33:29

+0

感謝您對代碼的更新,但'TheAudio'未聲明並出錯。 – user282076 2011-12-28 14:53:45

0

它更容易在回答中顯示代碼:

-(IBAction) playerPlay:(id)sender { 

    if([player isPlaying]) { 
     [player stop]; 
    } 
    if(![player isPlaying]) { 
     [player play]; 
    } 

} 

我會解釋: 的[玩家IsPlaying模塊]方法檢查是否音頻播放。如果正在播放音頻,則會執行括號中的所有內容(在這種情況下,音頻將停止播放)。

由於「!」在![player isPlaying]中,該方法與通常情況相反。這意味着如果玩家不在玩,括號中的所有內容都會被執行(在這種情況下,音頻開始播放)。

所有這些都包含在IBAction中,以便在點擊按鈕時執行它。

以供將來參考,在Objective-C中的if語句的正確格式爲:

if(thing to check for) { 
things that happen if the thing that is check for is correct; 
} 

詞「那麼」從未實際使用,但它是同樣的事情,無論是在括號。 希望這有助於!