我花了大部分时间来研究如何在另一个音频文件播放完毕后播放音频文件。
我已经尝试过audioPlayerDidFinishPlaying,因为它在播放其他音频文件时播放了第二个音频文件,但我获得了有限的成功。所以当播放任何音频文件时它会播放,我希望它只在播放某个音频文件时播放。我还发现,在某些设备上,音频卡在一个循环中,因此它处理了触发在audioPlayerDidFinishPlaying中播放的文件并再次播放该文件。
无论如何,它一整天都让我失望,我被打碎了。
无论如何,我已经找到了一个解决方案,它可以完美地满足我想要的效果,但我收到的警告是我无法解决如何解决问题。
NSArray *theSoundArray = [NSArray arrayWithObjects:@"dog-00-voice",@"dog-00",nil];
int totalSoundsInQueue = [theSoundArray count];
for (int i=0; i < totalSoundsInQueue; i ) {
NSLog(@"%d", i);
NSString *sound = [theSoundArray objectAtIndex:i];
// Wait until the audio player is not playing anything
while(![arraySounds isPlaying]){
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]
pathForResource:sound ofType:@"mp3"]] error:NULL];
self.arraySounds = player;
[arraySounds setVolume:1.0f];
[arraySounds play];
i++;
NSLog(@"%d", i);
}
}
这有效但我在for循环行结束时收到了警告。 “表达结果未使用”。
任何人都可以帮我解决这个问题,或者告诉我如何让audioPlayerDidFinishPlaying工作,如上所述。
提前致谢
答案 0 :(得分:0)
您可以通过从那里删除i
来执行此操作:
for (int i=0; i < totalSoundsInQueue; )
{
...
}
您也可以通过编写i = i
来修复它,但这是不必要的,不推荐使用。