2015-11-04 78 views
1

正如标题所暗示的,我试图弄清楚如何计算循环的次数(或者更准确地说,函数在开始时运行的次数和/或每个循环的结束)。我查看了所有文档,但找不到任何东西。任何帮助将不胜感激。计算NSSound循环的次数(Swift)

更新:我试过使用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 

} 

回答

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 

} 
+0

我做的数,但它似乎只在'sound.stop()'上触发。 – Matt

+0

你可以更新你试过的代码吗? –

+0

完成。我似乎无法让'aBool'返回'false'。 – Matt

0

环路属性

甲布尔值,表示所述声音是否重新启动播放时它 到达其内容的结束。

宣言

SWIFT VAR循环:BOOL

目的-C @property BOOL循环

讨论

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

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

另一种选择是使用时间currentTime的,并计算循环