【问题标题】:Play overlapping sound in iOS在 iOS 中播放重叠的声音
【发布时间】:2014-10-16 13:57:16
【问题描述】:

当用户单击按钮时,我正在使用 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 做到这一点吗?我应该使用其他框架吗?

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

    如参考here中所述:

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

    我猜你需要一个AVAudioPlayer 来处理你想要同时播放的每个声音。否则,您可以使用任何简单的库,例如 CocosDenshion,它非常简单、易于嵌入且功能强大(位于 OpenAL 上)。

    做事

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

    你就完成了。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-05-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多