2012-04-02 127 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]; 
}