计算NSSound循环的次数(Swift)

时间:2015-11-04 21:56:02

标签: swift audio nssound

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

}

2 个答案:

答案 0 :(得分: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

}

答案 1 :(得分:0)

  

循环属性

     

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

     

声明

     

SWIFT var循环:Bool

     

OBJECTIVE-C @property BOOL循环

     

讨论

     

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

我建议你将其设置为false并重新开始播放' manualy'当你收到didFinishPlaying

另一种选择是使用持续时间 currentTime 并计算循环次数