我设法将音频文件加载到播放器上并通过以下方法播放:
- (void) play:(NSString*)loop{
NSString* resourcePath = [[NSBundle mainBundle] pathForResource:loop
ofType:@"mp3"];
player = [[AVAudioPlayer alloc] initWithContentsOfURL:
[NSURL fileURLWithPath:resourcePath]];
player.delegate = self;
[player play];
player.numberOfLoops = 1;
player.currentTime = 0;
player.volume = 1.0;
}
}
(我在这篇文章中删除了几行,但方法本身效果很好)
这里的问题是,只有在调用方法play()时才会加载声音,这会导致调用方法的按钮点击和实际播放它的玩家之间有一点延迟。
我的应用程序中有大约200个声音,一种方法是在viewDidLoad中将自己的AVAudioPLayer中的每个声音加载,但我怀疑这被认为是好的代码。
在Android上,我正在使用SoundPool来解决这个问题而且效果很好,但我不认为在iOS上有相同的功能。
答案 0 :(得分:0)
我现在设法通过AudioServicesPlaySystemSound()
我使用的方法加载巨型数组中的所有声音
- (void)prepSounds{
NSString *soundPath =
[[NSBundle mainBundle] pathForResource:@"bl3"
ofType:@"mp3"];
NSURL *soundPathURL = [NSURL fileURLWithPath:soundPath];
AudioServicesCreateSystemSoundID(
(__bridge CFURLRef)soundPathURL, &soundID[0]);
AudioServicesPlaySystemSound(soundID[0]);
}
其中soundID[]
是标题中声明的SystemSoundID
数组。
现在,我可以轻松地通过AudioServicesPlaySystemSound(soundID[0])
发出声音,其中0与我加载的第一个声音有关。延迟接近0(我猜5毫秒)
但是,这仅适用于不超过30秒的声音。
如果您需要任何帮助,请在这里发表评论,我很乐意提供帮助。