2009-08-30 215 views
1

我製作了一個簡單的應用程序,其中有一個歌曲列表。用戶點擊列表條目並開始播放歌曲。在iPhone上播放音頻文件

我已經從Apple的示例項目(例如Metronome,BubbleLevel)中解除了SoundEffect類。它似乎做工精細用下面的代碼:

// declare in the .h file 
SoundEffect *audio; 

// setup - when controller loads 
audio = [SoundEffect alloc]; 

// play when user taps entry 
NSBundle *mainBundle = [NSBundle mainBundle]; 
[audio initWithContentsOfFile:[mainBundle pathForResource:@"entry1" ofType:@"mp3"]]; 
[audio play]; 

但是,如果「音頻」對象已經被打,我想它再次開始播放聲音之前停止它。 SoundEffect類沒有停止方法,或者我只是缺少一些東西。

如何在再次播放音頻之前停止音頻?

回答

4

爲什麼不簡單使用AVAudioPlayer

+2

謝謝,我不知道這堂課。一個關於它的問題是,如果你[播放]文件,然後[停止]音頻,然後[再次播放],它會從停止播放的位置開始播放。訣竅是在停止時將.currentTime設置爲0。 – AngryHacker 2009-09-07 22:45:29

+0

「將.currentTime設置爲0」 - 謝謝! – 2010-02-05 20:08:01

1

SoundEffect類是一個包裝圍繞基於C語言的系統聲音API(請參閱從氣泡水平儀項目.m file),這是一個簡單的「射後不理」式的API,不提供「一站式」功能。更多信息在System Sounds Services Reference

我也同意(並投票贊成)zoul的建議,使用AVAudioPlayer。系統聲音完全不適合長時間編碼的音頻文件,如MP3文件中的歌曲。