我有这段代码:
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个声音。如何停止以前播放的声音并播放下一个声音?一切都很好,只是当我第一次摇动时听到第一声,当我第二次摇动时,如果我的第一声没有停止播放,我会听到第一和第二声音。谢谢。
答案 0 :(得分:0)
致电
if([audioPlayer playing])
[audioPlayer stop];
摇动设备以停止当前歌曲的方法。
然后使用此委托方法播放下一首歌曲。
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
答案 1 :(得分:0)
当你摇动那段时间时
[audioPlayer stop];
首先检查audioplayer是否正在播放声音,如果没有那么请不要调用停止方法如果播放然后第一个呼叫停止方法
答案 2 :(得分: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];