当用户点击按钮时,我正在使用AVAudioPlayer播放一点点声音。声音持续约3秒,我希望如果用户多次按下按钮,则声音应该多次响起。如果用户在2秒内点击两次,则第二个声音应该与第一个镜头重叠。
我的问题是,镜头每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做到这一点吗?我应该使用其他框架吗?
答案 0 :(得分:1)
如参考文献here中所述:
同时播放多个声音,每个音频播放器播放一个声音,并进行精确同步
我想你想要同时播放的每个声音都需要AVAudioPlayer
。否则你可以使用像CocosDenshion这样的简单库,它非常简单,易于嵌入和强大(它驻留在OpenAL上)。
只做
[SimpleAudioEngine sharedEngine] playEffect:@"yoursound.wav"];
你已经完成了。
答案 1 :(得分:1)
请试试这个。它对我有用。
- (IBAction) tap:(id)sender {
if ([player isPlaying]) {
[player stop];
[player setCurrentTime:0.0];
}
[player play];
}
答案 2 :(得分:0)
如果高级框架失败,那么您可以选择AUSampler - 一个AudioUnit示例播放器(通常用于播放采样乐器,鼓声等)。这应该具有非常快的响应时间并且支持多个活动音符。将样本的播放配置为一次性。按下按钮时,模拟事件记录。您还可以将不同的样本(录音)映射到不同的音符和速度范围。