2012-03-24 59 views
4

我有這樣的代碼:IOS:AVAudioPlayer停止和播放

NSString *path = [NSString stringWithFormat:@"%@/%@", 
        [[NSBundle mainBundle] resourcePath], 
        @"change.mp3"]; 
NSURL *filePath = [NSURL fileURLWithPath:path isDirectory:NO]; 
change = [[AVAudioPlayer alloc] initWithContentsOfURL:filePath error:nil]; 
[change prepareToPlay]; 

我在此代碼中viewDidLoad中寫的; 現在用一個按鈕我開始這個聲音,但如果我按下相同的按鈕,我想停止這個聲音並重新開始聲音;我在IBAction裏試試這段代碼,但它不起作用

[change stop]; 
[change prepareToPlay]; 
[change play]; 

我該怎麼辦?

+0

'prepareToPlay'有返回值。如果它返回「'NO」「,那意味着失敗。 'change'與'viewDidLoad:'方法中的對象相同嗎? – 2012-03-24 20:35:29

回答

12

如何:

[change pause]; 
change.currentTime = 0.0; 
[change play]; 
+0

簡單易用的解決方案:) – Muzammil 2012-10-08 06:58:55

0

您是否嘗試再次進行初始化?我的意思是第一個[change release]並初始化它。

1

方法-stopdocumentation說:

停止方法不currentTime屬性的值重置爲0。換句話說,如果你在播放過程中呼叫停止,然後呼叫播放,播放將從其停止的位置繼續播放。

所以,你必須使用屬性currentTime並將其設置爲0

[change pause]; 
[change setCurrentTime:0]; 
[change play];