0

AVAudioPlayer はリエントラントではないようです。したがって、次の例では、soundfx を最後まで再生し、1 秒遅延させてから、1 秒の遅延ではなく、もう一度再生します。

// ...

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


(void) makeSomeNoise {

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


}

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

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

乾杯、ダグ

4

1 に答える 1

1

AVAudioPlayer が再入可能でないわけではありません。AVAudioPlayer は、makeSomeNoise 関数ではなく、ランループが終了した後にサウンドの再生を開始します。サウンドを 1 秒遅らせて再生したい場合は、次のようにします。

(void) makeSomeNoise {
  [soundfx play];
  [soundfx performSelector:play withObject: nil afterDelay:1.0];
}
于 2009-11-18T08:43:11.017 に答える