正如标题所暗示的,我正在试图弄清楚如何计算NSSound循环的次数(或者,更准确地说,在每个循环的开始和/或结束时运行一个函数)。我看了所有的文档,但我什么也找不到。任何帮助都将不胜感激。
更新:我尝试过使用func sound(sound: NSSound, didFinishPlaying aBool: Bool),但它似乎不会在循环完成后触发。代码:
func sound(sound: NSSound, didFinishPlaying aBool: Bool) {
pbNowPlaying.doubleValue = sound.currentTime
if aBool == true {
self.btnPlay.title = NSLocalizedString("titlePlay", comment: "Play")
self.btnPlay.state = NSOffState
self.pbNowPlaying.doubleValue = 0
self.btnPlay.needsDisplay = true
}
else {
Swift.print("Sound Looping")
}
self.needsDisplay = true
}发布于 2015-11-05 06:04:46
你有没有试过didFinishPlaying函数?每次声音文件完成剪辑时都会调用它。
optional func sound(_ sound: NSSound, didFinishPlaying aBool: Bool)如果创建一个在每次调用函数时都会增加的变量呢?一些简单的,可以跟踪伯爵的东西?计数就是你想要的,对吗?
var count = 0
func sound(sound: NSSound, didFinishPlaying aBool: Bool) {
pbNowPlaying.doubleValue = sound.currentTime
if aBool == true {
self.btnPlay.title = NSLocalizedString("titlePlay", comment: "Play")
self.btnPlay.state = NSOffState
self.pbNowPlaying.doubleValue = 0
self.btnPlay.needsDisplay = true
//Start playing sound again after it has ended.
count + 1
}
else {
Swift.print("Sound Looping")
}
self.needsDisplay = true
}发布于 2015-11-05 07:10:16
循环属性
一个布尔值,指示当声音到达其内容末尾时是否重新开始播放。
声明
快速变量循环:布尔值
OBJECTIVE-C @property BOOL循环
讨论
如果此属性的值为YES,则声音将在完成时重新开始播放,并且在到达其内容末尾并重新开始播放时,不会向其代理发送声音:didFinishPlaying:。此属性的默认值为NO。
我建议你设置它为假,并重新开始播放‘手动’当你收到didFinishPlaying
另一种选择是使用duration和currentTime并计算循环数
https://stackoverflow.com/questions/33532812
复制相似问题