2011-02-11 80 views
1

我正在播放聲音,當用戶點擊尊敬的按鈕。如何一次只播放一個聲音與AVAudioplayer

我有10個音頻文件的按鈕。

我正在使用AVAudioPlayer

AVAudioPlayer *myaudio=[[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:[sounds objectAtIndex:button.tag] ofType:@"mp3"]]error:NULL]; 
[myaudio play]; 

播放選定的聲音現在我有一個問題,如果我打以前的聲音那麼這兩個聲音被混合並獲得噪聲完成前點擊另一個按鈕。

我需要在完成第一個聲音後播放第二個聲音。

我的意思是在同一時間只會播放一個聲音。

我該怎麼辦,任何人都可以幫助我。

讓我添加評論,如果這個問題是不可理解的。

謝謝你提前。

回答

1

我解決我的問題是這樣

if (soundplay == 0) { 
     myaudio=[[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:[sounds objectAtIndex:x] ofType:@"mp3"]]error:NULL]; 
     myaudio.delegate = self; 
     soundplay = 1; 
     [myaudio play]; 
    } 

- (void) audioPlayerDidFinishPlaying: (AVAudioPlayer *)myaudio successfully:(BOOL)flag { 
    soundplay = 0; 
    NSLog(@"sound fnished"); 
} 

其中soundplay是整型變量

0

@Mahesh你可以創建一個AVAudioPlayer類變量,並在IBAction爲功能,您可以做這樣的事情:

if([myaudio playing]) 
    [myaudio stop]; 
myaudio=[[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:[sounds objectAtIndex:button.tag] ofType:@"mp3"]]error:NULL]; 
[myaudio play]; 
0

不創建AVAudioPlayer的不同的對象。爲AVAudioPlayer創建單線對象。並使用此對象只需檢查該對象玩家是否在玩。

if([myaudio playing]) 
{ 
    [myaudio stop]; 
    myaudio=[[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle  mainBundle]pathForResource:[sounds objectAtIndex:button.tag] ofType:@"mp3"]]error:NULL]; 
    [myaudio play]; 
} 
+0

我收到警告:「AVAudioPlayer」不能爲「-playing」和響應應用程序退出 – MaheshBabu 2011-02-11 07:29:41

+0

看樣從iOS參考庫代碼avTouch以供參考。 – 2011-02-11 07:36:24