稍微延迟播放声音
Play sound with a little delay
我的应用程序中有一个声音,它会在出现视图时自动启动;但是,正如标题所说,我希望这听起来有点延迟,大约在视图出现后半秒。我尝试使用 PlayAtTime,但它不起作用,或者我设置了错误...
这是我的代码:
var player = AVAudioPlayer?
override func viewDidLoad()
{
super.viewDidLoad()
playAudioWithDelay()
}
func playAudioWithDelay()
{
let file = NSBundle.mainBundle().URLForResource("PR1", withExtension: "wav")
player = AVAudioPlayer(contentsOfURL: file, error: nil)
player!.volume = 0.5
player!.numberOfLoops = -1
player!.playAtTime(//I tried with 0.5 but doesn't work)
player!.prepareToPlay()
player!.play()
}
你可以试试这个:
let seconds = 1.0//Time To Delay
let delay = seconds * Double(NSEC_PER_SEC) // nanoseconds per seconds
var dispatchTime = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
dispatch_after(dispatchTime, dispatch_get_main_queue(), {
//Play Sound here
})
完整代码:
func playAudioWithDelay()
{
let file = NSBundle.mainBundle().URLForResource("PR1", withExtension: "wav")
player = AVAudioPlayer(contentsOfURL: file, error: nil)
player!.volume = 0.5
player!.numberOfLoops = -1
player!.playAtTime(//I tried with 0.5 but doesn't work)
player!.prepareToPlay()
let seconds = 1.0//Time To Delay
let delay = seconds * Double(NSEC_PER_SEC) // nanoseconds per seconds
var dispatchTime = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
dispatch_after(dispatchTime, dispatch_get_main_queue(), {
player!.play()
})
}
尝试以下在 Swift 3.0
中实现的功能
var player: AVAudioPlayer?
func playAudioWithDelay()
{
let file = Bundle.main.url(forResource: "PR1", withExtension: "wav")
do {
player = try AVAudioPlayer(contentsOf: file!)
player?.volume = 0.5
player?.numberOfLoops = -1
player?.prepareToPlay()
} catch let error as NSError {
print("error: \(error.localizedDescription)")
}
let seconds = 1.0//Time To Delay
let when = DispatchTime.now() + seconds
DispatchQueue.main.asyncAfter(deadline: when) {
self.play()
}
}
func play() {
if player?.isPlaying == false {
player?.play()
}
}
Swift 5 音频延迟设置:
var player: AVAudioPlayer?
func playAudio(soundName: String, extension: String, delay: Double)
{
let file = Bundle.main.url(forResource: soundName, withExtension: extension)
do {
player = try AVAudioPlayer(contentsOf: file!)
player?.volume = 0.5
player?.numberOfLoops = -1
player?.prepareToPlay()
} catch let error as NSError {
print("error: \(error.localizedDescription)")
}
let seconds = delay//Time To Delay
let when = DispatchTime.now() + seconds
DispatchQueue.main.asyncAfter(deadline: when) {
player.play()
}
}
我的应用程序中有一个声音,它会在出现视图时自动启动;但是,正如标题所说,我希望这听起来有点延迟,大约在视图出现后半秒。我尝试使用 PlayAtTime,但它不起作用,或者我设置了错误... 这是我的代码:
var player = AVAudioPlayer?
override func viewDidLoad()
{
super.viewDidLoad()
playAudioWithDelay()
}
func playAudioWithDelay()
{
let file = NSBundle.mainBundle().URLForResource("PR1", withExtension: "wav")
player = AVAudioPlayer(contentsOfURL: file, error: nil)
player!.volume = 0.5
player!.numberOfLoops = -1
player!.playAtTime(//I tried with 0.5 but doesn't work)
player!.prepareToPlay()
player!.play()
}
你可以试试这个:
let seconds = 1.0//Time To Delay
let delay = seconds * Double(NSEC_PER_SEC) // nanoseconds per seconds
var dispatchTime = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
dispatch_after(dispatchTime, dispatch_get_main_queue(), {
//Play Sound here
})
完整代码:
func playAudioWithDelay()
{
let file = NSBundle.mainBundle().URLForResource("PR1", withExtension: "wav")
player = AVAudioPlayer(contentsOfURL: file, error: nil)
player!.volume = 0.5
player!.numberOfLoops = -1
player!.playAtTime(//I tried with 0.5 but doesn't work)
player!.prepareToPlay()
let seconds = 1.0//Time To Delay
let delay = seconds * Double(NSEC_PER_SEC) // nanoseconds per seconds
var dispatchTime = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
dispatch_after(dispatchTime, dispatch_get_main_queue(), {
player!.play()
})
}
尝试以下在 Swift 3.0
中实现的功能 var player: AVAudioPlayer?
func playAudioWithDelay()
{
let file = Bundle.main.url(forResource: "PR1", withExtension: "wav")
do {
player = try AVAudioPlayer(contentsOf: file!)
player?.volume = 0.5
player?.numberOfLoops = -1
player?.prepareToPlay()
} catch let error as NSError {
print("error: \(error.localizedDescription)")
}
let seconds = 1.0//Time To Delay
let when = DispatchTime.now() + seconds
DispatchQueue.main.asyncAfter(deadline: when) {
self.play()
}
}
func play() {
if player?.isPlaying == false {
player?.play()
}
}
Swift 5 音频延迟设置:
var player: AVAudioPlayer?
func playAudio(soundName: String, extension: String, delay: Double)
{
let file = Bundle.main.url(forResource: soundName, withExtension: extension)
do {
player = try AVAudioPlayer(contentsOf: file!)
player?.volume = 0.5
player?.numberOfLoops = -1
player?.prepareToPlay()
} catch let error as NSError {
print("error: \(error.localizedDescription)")
}
let seconds = delay//Time To Delay
let when = DispatchTime.now() + seconds
DispatchQueue.main.asyncAfter(deadline: when) {
player.play()
}
}