2017-05-12 1 views
1

ここにその話があります。UIアニメーションの遅れを伴わずに連続した短い音を再生

ボタンをタップすると、timer.setEventHandlerはアニメーション(125ミリ秒ごとにUIに10個の円を追加するようなもの)をレンダリングします。アニメーションはスムーズに実行されています。

今、サークルが追加されるたびに(ビープ音のように音が鳴りますが、MP3ファイルから音が鳴ります)追加します。アニメーションが滑らかであるが、音が均等に再生されない

  1. AudioServicesPlaySystemSound

    :私は2つのアプローチを試してみました。少なくともサウンドの再生は、UIにまったく遅れません。

  2. 使用AVAudioPlay

    私はシングルトンクラスでAVAudioPlayインスタンスを作成し、すべての時間は、アニメーション・ロジックは、音が別のスレッドで演奏されていることを確認するためにDispatchedQueueでplay()を呼び出します。ボタンを初めて押すと、アニメーションが遅れます。ただし、アニメーションが終了してすぐにボタンを2秒以内にもう一度押すと、アニメーションとサウンドが完全に再生されます。しかし、最後の音が鳴ってから10秒ほど待つと、アニメーションが遅れて音が鳴り響きます。

それがアクティブでないときのiOSは、(私はiPadのエア2にiOSの10を実行しています)、実際に睡眠にAVAudioPlayインスタンスを置く場合、私は疑問に思って。最後のサウンドが再生されてから短時間(2秒)以内にボタンを押さないと、AVAudioPlayスレッドは常にアクティブになります。

+0

AVAudioPlayerです。そして、尋ねる前に検索してみてください。これは既にここで_lot_になっています。 「AVAudioPlayerの待ち時間」を検索します。あなたの質問は、例えば、http://stackoverflow.com/questions/14162805/playing-sound-effect-with-no-latency-in-objective-cの非常に近い複製です。 – matt

+1

@matt Nope。投稿されたソリューションの中で私の場合はうまくいきません。 – zsong

答えて

0

私はそれを理解しました。

タイマーを使用して、1秒ごとに0ボリュームで音を再生し、オーディオセッションを有効にします。それは愚かに聞こえるが、それは魅力のように機能する!

関連する問題