我正在使用AVAudioPlayer播放一首歌,当歌曲达到30秒标记时,我想引发一个动作(调用一个函数)。当这首歌完成时,我知道如何做到这一点:
func play(url: NSURL) {
let item = AVPlayerItem(URL: url)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "playerDidFinishPlaying:", name: AVPlayerItemDidPlayToEndTimeNotification, object: item)
let player = AVPlayer(playerItem: item)
player.play()
}
func playerDidFinishPlaying(note: NSNotification) {
// Your code here
}
然而,我想做类似的事情,但是这首歌已经达到了30秒。这可能吗?现在我必须使用NSTimers,但它不可靠。
谢谢!
答案 0 :(得分:0)
不确定这是否昂贵,但效果很好。
首先我运行一个调用" checkForStrobe"很多:
func checkForStrobe(){
//This is being called repeatedly checking if its time to run strobe
if(backgroundAudio.currentTime >= 38.5 && backgroundAudio.currentTime <= 38.6){
runStrobe()
}
if(backgroundAudio.currentTime >= 63.5 && backgroundAudio.currentTime <= 63.6){
stopStrobe()
}
if(backgroundAudio.currentTime >= 125.0 && backgroundAudio.currentTime <= 125.1){
runStrobe()
}
if(backgroundAudio.currentTime >= 150.0 && backgroundAudio.currentTime <= 150.1){
stopStrobe()
}
}
然后我把它放在checkForStrobe函数中:
{{1}}
这解决了我的问题。