2010年11月10日水曜日

サウンドの連続再生

ゲーム等でボタンを連射した時の様に、同じサウンドを連続して再生させるには、以下のようにします。




    // soundはAVAudioPlayerクラスのインスタンスです
    if( sound.playing ) {
        [sound pause];
    }
    sound.currentTime = 0;
    [sound play];



普通にstopしてplayすれば良さそうですが、実際にstop・playすると、再生が終了しないと次の再生が行われません。
ゆっくりした操作の場合はこれでも良いのですが、ゲームなどでボタンを連射する操作が必要な場合はサウンド再生が1テンポ遅れて聞こえてくるようになります。
上記のように、サウンドが再生中の場合はpauseメソッドで一時停止しておき、currentTimeプロパティで再生位置を最初に設定、その後、playメソッドで再生するというやりかたで、連射しても1テンポ遅れることなく再生されるようになります。

追記:
上記はAVAudioPlayerのplayingプロパティでサウンドが再生中だったらpauseメソッドで一時停止させていますが、この処理があると処理が若干重くなるようです。
ですので、以下のように判定処理自体を省いてしまってもいいかもしれません。


    sound.currentTime = 0;
    [sound play];

0 件のコメント:

コメントを投稿