1

編集:アダムBの答えを今実装しようとしています...

xCode プロジェクトの Supporting Files フォルダーに入れた crashSound.wav ファイルがあります。

私は今 while ループの中でそれを再生しようとしていますが、どのように正確にそれを行うことができるかについてのドキュメントはあまり明確ではありません. どこかにデリゲート オブジェクトを作成し (私の Game クラスだと思います)、stopButtonPressed が false であるかどうか、および stopButtonPressed 条件が false のときにループして再度再生できるようにファイルの再生が終了したかどうかに関する通知を取得する必要があることはわかっています。 [crashSound play] メソッドを呼び出してそれを行うべきではないことはわかっていますが、その方法がわかりません..何か助けはありますか?

@interface Game()
{
    // code...

    AVAudioPlayer *crashSound;

    // code...
}
@end

@implementation Game

- (id) init 
{ 
    // code...

    NSURL *crashSoundFile = [[NSURL alloc] initWithString:@"crashSound" ];

    crashSound = [[AVAudioPlayer alloc] initWithContentsOfURL:crashSoundFile error:NULL];

    // code...
}
-(void) play // this is my "main" method that will be called once the playButton is pressed
{
   while(!self.stopButonPressed)
   {
      [crashSound play];
   }
}
@end
4

1 に答える 1

0

ほとんどのマルチメディア ライブラリ (たとえば、を含む) がどのように機能するかについて、コードを間違って構造化していますAVPlayer

while ループを使用する代わりに、サウンドの再生を開始し、完了するたびに条件が true かどうかを確認します。ループの代わりに、タイマーに基づいて、またはサウンドが完了したときにそのコールバックで「次の」ことをトリガーする必要がある場合があります。

AVPlayer と通知機能のセットアップ方法の例については、この質問と適切な回答を参照してくださいplayerItemDidReachEnd:: AVFoundation AVPlayer でビデオをループしていますか?

于 2012-08-09T16:57:25.973 に答える