0

私はこのコードを持っています:

    int ran = 1 + arc4random() % 18;

    NSString *soundFileIs=[NSString stringWithFormat:@"ton%i.mp3",ran];
    NSString *paths = [[NSBundle mainBundle] resourcePath];
    NSString *audioFile = [paths stringByAppendingPathComponent:soundFileIs];
    NSData *cdata =[NSData dataWithContentsOfFile:audioFile];

    audioPlayer = [[AVAudioPlayer alloc] initWithData:cdata error:nil];
    audioPlayer.delegate = self;

    [audioPlayer play];

デバイスを振ると、18 のサウンドがランダムに再生されます。前の音の再生を停止し、次の音を再生するにはどうすればよいですか? すべてがうまく機能します。最初に振ると最初の音が聞こえ、2回目に振ると、最初の音が再生を停止しなければ、1番目と2番目の音が再生されます。ありがとうございました。

4

3 に答える 3

0

電話

if([audioPlayer playing])
    [audioPlayer stop]; 

現在の曲を停止するためにデバイスを振る方法。

次に、このデリゲートメソッドを使用して次の曲を再生します。

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
于 2012-08-31T04:55:23.753 に答える
0

あなたがその時の電話を振るとき

 [audioPlayer stop];

最初にオーディオプレーヤーがサウンドを再生しているかどうかを確認し、そうでない場合は停止方法を呼び出さないでください再生している場合は最初の呼び出し停止方法

于 2012-08-31T04:55:43.697 に答える
0

何かを再生する前に、それがすでに再生されているかどうかを確認し、停止を呼び出します。コードは次のようになります。

int ran = 1 + arc4random() % 18;

NSString *soundFileIs=[NSString stringWithFormat:@"ton%i.mp3",ran];
NSString *paths = [[NSBundle mainBundle] resourcePath];
NSString *audioFile = [paths stringByAppendingPathComponent:soundFileIs];
NSData *cdata =[NSData dataWithContentsOfFile:audioFile];

if (audioPlayer.playing)
    [audioPlayer stop];

audioPlayer = [[AVAudioPlayer alloc] initWithData:cdata error:nil];
audioPlayer.delegate = self;

[audioPlayer play];
于 2012-08-31T05:13:02.533 に答える