在iOS中播放重叠声音
问题描述:
当用户单击按钮时,我正在使用AVAudioPlayer播放小声音。声音持续约3秒钟,我想要的是,如果用户多次按下按钮,该声音应该会多次发声。如果用户在2秒内点击两次,则第二个声音应该与第一个镜头重叠。在iOS中播放重叠声音
我的问题是,镜头只发出每3秒钟(如果用户快速点击),而不是每按一次按钮。
里面viewDidLoad中
NSString *path = [[NSBundle mainBundle] pathForResource:@"shot" ofType:@"caf"];
urlShotCaf = [NSURL fileURLWithPath:path];
player = [[AVAudioPlayer alloc] initWithContentsOfURL:urlShotCaf error:nil] ;
[player prepareToPlay];
而当一个人点击了发射按钮
- (IBAction)tap:(id)sender {
clicks++;
[player play];
}
我能做到这一点与AVAudioPlayer?我应该使用另一个框架吗?
答
如果高级框架失败,那么您可以使用AUSampler - 一个AudioUnit示例播放器(通常用于播放采样乐器,鼓声等)。这应该有非常快的响应时间,并支持多个活动笔记。将样本的播放配置为一次性播放。当按下按钮时,模拟事件上的音符。您还可以将不同的样本(录音)映射到不同的音符和速度范围。
答
如参照here说:
播放多个同时的声音,每个音频播放器一个声音,用精确的同步
我猜你需要一个AVAudioPlayer
为每一个你想要的声音同时播放。否则,你可以使用任何简单的库,如CocosDenshion,它非常简单,易于嵌入和强大(它驻留在OpenAL上)。
只是做
[SimpleAudioEngine sharedEngine] playEffect:@"yoursound.wav"];
和你做。
答
请试试这个。这个对我有用。
- (IBAction) tap:(id)sender {
if ([player isPlaying]) {
[player stop];
[player setCurrentTime:0.0];
}
[player play];
}