2011-02-11 14 views
1

ユーザーが尊敬するボタンをタップすると音が鳴ります。AVAudioplayerで一度に1つのサウンドを再生する方法

私は10個のオーディオファイルを含む10個のボタンを持っています。

私は今、私は、以前のサウンドを再生が完了する前に別のボタンをクリックした場合、両方の音が混合され、ノイズを得るという問題を抱えているAVAudioPlayer

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

を使用して、選択したサウンドを再生しています。

最初の音の終了後に2番目の音を再生する必要があります。

これは、一度に1つのサウンドだけが再生されることを意味します。

どうすればいいですか、誰かが私を助けてください。

この質問を理解できない場合は、コメントを追加してください。

ありがとうございます。あなたはAVAudioPlayerクラス変数を作成することができますし、IBAction機能で、あなたがこのような何かを行うことができ@Mahesh

答えて

1

私はsoundplayが整数変数

+0

しかし、私は一度ボタンをクリックすると音が鳴り始めます..そして、もう一度それをクリックすると、ギャップのあるサウンドの別のインスタンスが始まります...私はボタンを無効にしたくありません....どうして私は2番目のクリック.. ??? – DShah

0

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用のsingletoneオブジェクトを作成します。このオブジェクトを使用すると、そのオブジェクトのプレーヤが再生しているかどうかを確認するだけです。

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

私は取得しています警告があるこの

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"); } 

ように私の問題を解決:「AVAudioPlayer」「-playing」とアプリケーションに応答しないことは、 – MaheshBabu

+0

は、サンプルを参照してください終了しますiOSリファレンスライブラリのavTouchコードを参考にしてください。 –

関連する問題