我需要在函数中插入一个代码,当它被调用时播放一个声音。
问题是,函数的调用速度比声音持续时间快,所以声音的播放次数比函数调用的次数要少。
function keyDownSound(){
NSSound(named: "tennis")?.play()
}问题是NSSound只有在尚未播放的情况下才会开始播放。有什么需要修正的想法吗?
发布于 2016-03-14 06:42:36
问题来源是init?(named name: String)为相同名称返回相同的NSSound实例。您可以复制NSSound实例,同时播放多个声音:
function keyDownSound(){
NSSound(named: "tennis")?.copy().play()
}另一种方式-播放结束后再次启动声音。为此,您需要实现sound(sound: NSSound, didFinishPlaying aBool: Bool)委托方法。例如:
var sound: NSSound?
var playCount: UInt = 0
func playSoundIfNeeded() {
if playCount > 0 {
if sound == nil {
sound = NSSound(named: "Blow")!
sound?.delegate = self
}
if sound?.playing == false {
playCount -= 1
sound?.play()
}
}
}
func keyDownSound() {
playCount += 1
playSoundIfNeeded()
}
func sound(sound: NSSound, didFinishPlaying aBool: Bool) {
playSoundIfNeeded()
}https://stackoverflow.com/questions/35976676
复制相似问题