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 种声音。我怎样才能停止以前播放的声音,然后播放下一个声音?一切都很好,只是我第一次摇动时听到第一个声音,当我第二次摇动时,如果我的第一个声音没有停止播放,我会听到第一个和第二个声音播放。谢谢你。

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 回答