2009-08-24 11 views
0

AVAudioPlayerは再入可能ではないようです。そこで、以下に1秒の遅延ではなく、その後、再び再生した後、1秒の遅延、完了するまでプレーをsoundfxだろう - と私は望んで再生を重ねる結果:AVAudioPlayerのレンタルが正しくありませんか?

// ... 

AVAudioPlayer* soundfx = [[AVAudioPlayer alloc] initWithContentsOfURL:soundURL error:nil]; 


(void) makeSomeNoise { 

    [soundfx play]; 
    sleep(1); 
    [soundfx play]; 


} 

私は、NSOperationに頼る必要があります - スレッド - 達成するために再生を重複させる私の目標は?

注:IMA4/ADPCMフォーマットを使用しています。これは、レイヤードサウンドの再生に適したフォーマットです。

乾杯、 ダグ

答えて

1

それはAVAudioPlayerはリエントラントでないことはありません。 AVAudioPlayerは、runloopが終了した後で、あなたのmakeSomeNoise機能ではなく、あなたのサウンドを再生し始めます。 1秒遅れでサウンドを再生したい場合は、これを行うことができます:

(void) makeSomeNoise { 
    [soundfx play]; 
    [soundfx performSelector:play withObject: nil afterDelay:1.0]; 
} 
関連する問題