是否有可能使声音更快?

时间:2016-02-13 03:29:18

标签: ios swift avaudioplayer

在我的应用程序中,我有一个滑块,当我移动到一个刻度线时会发出“勾号”声。

这是我打电话给它的功能:

func playSound() {
    if player.playing {
       player.stop()
    }

    let qualityOfServiceClass = QOS_CLASS_BACKGROUND
    let backgroundQueue = dispatch_get_global_queue(qualityOfServiceClass, 0)
    dispatch_async(backgroundQueue, {
        self.player.prepareToPlay()
        self.player.play()
    })
}

然而,我想要实现的是当用户更快地拖动滑块时声音更快...就像“tick-tick-tick”一样,就像你在车内机械旋钮上调节热量时所听到的那样。

通过我的实现,我只能在快速拖动时获得一个“滴答”声音,因为player.stop()取消了前一个。所以我想在拖动速度更快的时候能否让声音播放更快?

非常感谢任何形式的帮助。

2 个答案:

答案 0 :(得分:4)

您可以通过以下方式提高费率:

self.player.prepareToPlay()
self.player.enableRate = true
self.player.rate = 2.0
self.player.play()

如果你想循环,你可以添加:

self.player.numberOfLoops = 3

答案 1 :(得分:0)

也许我在思考这个问题,但这是我将如何继续下去: 您应该创建一个NSArray,其中包含与滑块值一样多的AVAudioPlayer个实例。 即:如果滑块范围从0到10,则创建一个包含10个AVAudioPlayer的数组。

用户移动滑块后,请在滑块值的索引处获取AVAudioPlayer中的NSArray并播放。我会仔细考虑滑块的范围,好像范围太小而用户移动滑块的速度太快,可能会遇到与现在相同的问题。