2012-04-02 302 views
1

当用户单击按钮时,我正在使用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?我应该使用另一个框架吗?

回答

0

如果高级框架失败,那么您可以使用AUSampler - 一个AudioUnit示例播放器(通常用于播放采样乐器,鼓声等)。这应该有非常快的响应时间,并支持多个活动笔记。将样本的播放配置为一次性播放。当按下按钮时,模拟事件上的音符。您还可以将不同的样本(录音)映射到不同的音符和速度范围。

1

如参照here说:

播放多个同时的声音,每个音频播放器一个声音,用精确的同步

我猜你需要一个AVAudioPlayer为每一个你想要的声音同时播放。否则,你可以使用任何简单的库,如CocosDenshion,它非常简单,易于嵌入和强大(它驻留在OpenAL上)。

只是做

[SimpleAudioEngine sharedEngine] playEffect:@"yoursound.wav"]; 

和你做。

1

请试试这个。这个对我有用。

- (IBAction) tap:(id)sender { 
    if ([player isPlaying]) { 
     [player stop]; 
     [player setCurrentTime:0.0]; 
    } 
    [player play]; 
}