2009-08-30 11 views
1

シンプルなアプリを作っています。ここには曲のリストがあります。ユーザがリスト項目をタップし、曲が再生を開始する。iPhoneでオーディオファイルを再生する

SoundEffectクラスをAppleのサンプルプロジェクト(Metronome、BubbleLevelなど)から削除しました。次のコードで正常に動作するようです。しかし

// 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クラスにはstopメソッドがないか、単に何かが欠けています。

もう一度再生する前にオーディオを停止しますか?

答えて

4

AVAudioPlayerを使ってみませんか?

+2

ありがとう、私はこのクラスについて知りませんでした。あなたがファイルを再生した後、オーディオを停止してから[再生]すると、中断したところから再生が始まります。トリックは停止時に.currentTimeを0に設定することです。 – AngryHacker

+0

".currentTimeを0に設定しました - ありがとう! –

1

SoundEffectクラスは、CベースのシステムサウンドAPI(Bubble Levelプロジェクトの.m fileを参照)を包むラッパーです。これは、「停止」機能を提供しない単純な「ファイヤーアンドフォース」スタイルのAPIです。 System Sounds Services Referenceの詳細

私はまた、AVAudioPlayerを使用するzoulの提案に同意した(投票しました)。システムサウンドは、MP3ファイルのような長くエンコードされたオーディオファイルには完全に不適切です。

関連する問題