2012-03-20 9 views
0

私のアプリで2曲以上再生したいです。 AVAudioPlayerを使ってどうすればいいですか?AVAudioPlayerを使用して2曲以上を再生する方法

+0

など、その1 終了すると再生しているとき audioPlayerDidFinishPlayingが再び呼び出されます、そして、あなたはその次のいずれかを開始しますが、同時に、または異なる時間にそれらを再生しますか?曲はどのような形式ですか? –

+0

私はそれを一つずつ再生したいと思います。一つの曲が完成すると自動的に別の曲が始まります。そして、私は1つのプロジェクトディレクトリにすべての曲を保存しています。 –

答えて

1

私は答えを入力するつもりだったが、Googleは完璧な答えを提供します。

http://www.iphonedevsdk.com/forum/iphone-sdk-development/27285-play-sequence-audio-files-avaudioplayer.html

ページからコードの最初の部分がちょうどシーケンス内のすべてのサウンドを呼び出します:

- (void)playSoundSequence { 

    // Make array containing audio file names 
    NSArray *theSoundArray = [NSArray arrayWithObjects:@"one",@"two",nil]; 

    int totalSoundsInQueue = [theSoundArray count]; 

    for (int i=0; i < totalSoundsInQueue; i) { 

     NSString *sound = [theSoundArray objectAtIndex:i]; 

       // Wait until the audio player is not playing anything 
     while(![audioPlayer isPlaying]){ 

      AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] 
               pathForResource:sound ofType:@"wav"]] error:NULL]; 
      self.audioPlayer = player; 
      [player release]; 
      [audioPlayer setVolume:1.0f]; 
      [audioPlayer play]; 
      //Increment for loop counter & move onto next iteration 
         i++;  
     } 
    } 

} 

しかし、あなたはおそらくAVAudioPlayerDelegateを使用したほうが良いです:

あなたがループで待機したくない場合は、あなたもあなたの コントローラAVAudioPlayerDelegateを作り、

コードを実装することができます

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag 

これは年末に呼び出されますがオーディオファイルに達すると、 で次のオーディオファイルの再生を開始します。

+0

ありがとうネイサン....私を試してみましょう..... –

関連する問題