Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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
Swift函数playAtTime()不添加延迟_Swift_Audio_Avaudioplayer - Fatal编程技术网

Swift函数playAtTime()不添加延迟

Swift函数playAtTime()不添加延迟,swift,audio,avaudioplayer,Swift,Audio,Avaudioplayer,我正在试着玩两个有声播放器,一个接一个地玩完。我使用Swift函数playAtTime()创建第二个延迟,如下所示: var audioPlayer1 = AVAudioPlayer() var audioPlayer2 = AVAudioPlayer() let soundPathA = NSBundle.mainBundle().pathForResource("A", ofType: "m4a") let soundURLA = NSURL.fileURLWithPath(soundPa

我正在试着玩两个有声播放器,一个接一个地玩完。我使用Swift函数playAtTime()创建第二个延迟,如下所示:

var audioPlayer1 = AVAudioPlayer()
var audioPlayer2 = AVAudioPlayer()

let soundPathA = NSBundle.mainBundle().pathForResource("A", ofType: "m4a")
let soundURLA = NSURL.fileURLWithPath(soundPathA!)

let soundPathB = NSBundle.mainBundle().pathForResource("B", ofType: "m4a")
let soundURLB = NSURL.fileURLWithPath(soundPathB!)

var noteA = Sound()
noteA.URL = soundURLA

var noteB = Sound()
noteB.URL = soundURLB

self.audioPlayer1 = try!AVAudioPlayer(contentsOfURL: soundURLA)
self.audioPlayer2 = try!AVAudioPlayer(contentsOfURL: soundURLB)

let duration : NSTimeInterval = audioPlayer1.duration
self.audioPlayer1.play()
self.audioPlayer2.playAtTime(duration)

但是,没有延迟发生。我的问题是什么?

播放时间功能不会在给定时间开始播放。相反,它会立即播放,从要播放的声音中的给定时间开始。因此,如果你给它0.6,它将立即开始播放,但声音将从0.6秒开始。请参阅文档

如果您想在播放前等待,您可以使用
dispatch\u after

let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(0.6 * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue()) {
    self.audioPlayer2.play()
}

playAtTime
功能不会在给定时间开始播放。相反,它会立即播放,从要播放的声音中的给定时间开始。因此,如果你给它0.6,它将立即开始播放,但声音将从0.6秒开始。请参阅文档

如果您想在播放前等待,您可以使用
dispatch\u after

let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(0.6 * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue()) {
    self.audioPlayer2.play()
}

我还没有试过Michael的答案,但是对于那些想知道如何使用
playAtTime
的人来说,看看这个:看看playEcho函数

对我来说,代码如下所示:

var playTime1 : NSTimeInterval = audioPlayer2.deviceCurrentTime + (duration1*Double(value))
self.audioPlayer1.stop()
self.audioPlayer1.currentTime = 0
self.audioPlayer1.play()

我还没有试过Michael的答案,但是对于那些想知道如何使用
playAtTime
的人来说,看看这个:看看playEcho函数

对我来说,代码如下所示:

var playTime1 : NSTimeInterval = audioPlayer2.deviceCurrentTime + (duration1*Double(value))
self.audioPlayer1.stop()
self.audioPlayer1.currentTime = 0
self.audioPlayer1.play()

持续时间返回的值是多少?只会延迟大约0.6秒,这是您想要的延迟量吗?是的,这应该是正确的延迟,但是现在,第二个声音根本没有播放。你能发布与两个音频播放器相关的其余代码吗?请问
duration
返回的值是多少?它只会延迟大约0.6秒,这是你想要的延迟量吗?是的,这应该是正确的延迟,但现在,第二个声音根本没有播放。你能发布关于这两个音频播放器的其余代码吗!工作得很好!谢谢工作得很好!