1

正如标题所示,我试图弄清楚如何计算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

}
4

2 回答 2

1

您是否尝试过 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-04T22:04:46.190 回答
0

loops 属性

一个布尔值,指示声音在到达其内容结尾时是否重新开始播放。

宣言

SWIFT var 循环:布尔

OBJECTIVE-C @property BOOL 循环

讨论

当此属性的值为 YES 时,声音在完成时重新开始播放,并且在到达其内容的末尾并重新开始播放时不会向其委托发送 sound:didFinishPlaying:。此属性的默认值为 NO。

我建议您将其设置为 false 并在收到 didFinishPlaying 时重新启动“手动”播放

另一种选择是使用durationcurrentTime并计算循环数

于 2015-11-04T23:10:15.697 回答