Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 有可能使声音变快吗?_Ios_Swift_Avaudioplayer - Fatal编程技术网

Ios 有可能使声音变快吗?

Ios 有可能使声音变快吗?,ios,swift,avaudioplayer,Ios,Swift,Avaudioplayer,在我的应用程序中,我有一个滑块,当我移动到一个刻度时,它会发出“刻度”的声音 下面是我调用的函数: func playSound() { if player.playing { player.stop() } let qualityOfServiceClass = QOS_CLASS_BACKGROUND let backgroundQueue = dispatch_get_global_queue(qualityOfServiceClass, 0

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

下面是我调用的函数:

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()
    })
}
然而,我想实现的是,当用户拖动滑块的速度更快时,声音也会更快…就像“嘀嗒嘀嗒”一样,就像在汽车的机械旋钮上调节热量时听到的一样

在我的实现中,快速拖动只能得到一个“滴答”声,因为player.stop()会取消前一个声音。所以我在想,当拖动速度更快时,我是否能让声音播放得更快


非常感谢您提供的任何帮助。

也许我想得太多了,但以下是我将如何继续: 您应该创建一个
NSArray
,其中包含与滑块值一样多的
AVAudioPlayer
实例。 ie:如果你的滑块范围从0到10,创建一个包含10个AVAudioPlayer的数组


用户移动滑块后,在
NSArray
中的滑块值索引处获取
AVAudioPlayer
,然后播放。我会仔细考虑滑块的范围,如果范围太小,用户移动滑块太快,您可能会遇到与现在相同的问题。

您可以这样做来提高速率:

self.player.prepareToPlay()
self.player.enableRate = true
self.player.rate = 2.0
self.player.play()
如果要循环,可以添加以下内容:

self.player.numberOfLoops = 3