2009-12-14 76 views
0

好吧我有兩個問題。我正在使用AVAudioPlayer以.caf格式播放簡單的音頻文件。我想要做的是有一個播放和暫停按鈕。以下是一個簡單的IBAction的示例,用於播放按鈕中的音頻。使用AVAudioPlayer幫助停止音頻

- (IBAction) clear { 
NSString *path = [[NSBundle mainBundle] pathForResource:@"clear" ofType:@"caf"]; 
AVAudioPlayer* myAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL]; 
myAudio.delegate = self; 
myAudio.volume = 1.0; 
myAudio.numberOfLoops = 0; 
[myAudio play]; 
} 

所以,當我繼續前進,創建另一個IBAction爲與方法...

- (IBAction) stopaudio { 
[myAudio stop]; 
audioPlayer.currentTime = 0; 
} 

我編譯的Xcode告訴我,myAudio在stopaudio IBAction爲沒有定義。我如何解決這個問題,以便能夠在另一個IBAction中訪問myAudio?

我的第二個問題是,我使用NavigationController來設置一個TableView,當我做出選擇時,它會帶我到一個帶有後退按鈕的UIView,以返回到TableView。我試圖做的是當我回到TableView時,殺掉任何在UIView中播放的音頻。上面的代碼是我將在UIView中使用的代碼的一部分。

另外一個簡單的問題。比方說,我有一個1分鐘長的音頻文件。在舊實例播放之前,再次單擊播放將重疊該音頻的新實例。如何檢查myAudio是否正在播放,並在myAudio播放完畢之前不允許再次播放?

謝謝!

+0

你應該遵循他們所使用的命名約定,這樣stopaudio會stopAudio。 – Sneakyness

回答

3

首先,您應該閱讀文檔。它將刪除幾乎所有的問題。不過,要從你的類的所有方法訪問AVAudioPlayer的實例,你應該在你的.h文件中定義它。要使播放器停止返回上一個屏幕,請撥打viewWillDisappear:(BOOL)animated方法中的[myAudio stop]。關於你最後一個問題。如果您在.h文件中定義myAudio,您將能夠檢查它是否正在播放。水木清華像

- (IBAction) clear { 
    if(![myAudio isPlaying]){ 
     [myAudio play]; 
    } 

}