gpt4 book ai didi

ios - 每次 NSTimer 递减时播放一次音频文件?

转载 作者:行者123 更新时间:2023-11-30 14:01:28 26 4
gpt4 key购买 nike

我正在 Swift 中工作,我有一个从 3,2,1 开始倒数的 NSTimer。我想在每次计时器递减时播放一个音频文件,这样计时器就会显示 3 并且音频会播放一次,然后翻转到 2 并播放一次音频,最后翻转到 1 并播放一次。

这就是我创建计时器并尝试执行此操作的方式:

var path2 = NSBundle.mainBundle().pathForResource("splatter1", ofType: "wav")
var soundTrack2 = AVAudioPlayer()

func timeToMoveOn() {
let loadingDelay = 0.01 * Double(NSEC_PER_SEC)
let loadingTime = dispatch_time(DISPATCH_TIME_NOW, Int64(loadingDelay))
dispatch_after(loadingTime, dispatch_get_main_queue()) {
//After delay
self.performSegueWithIdentifier("goToGameScene", sender: self)
}
}
func splatterSound() {
soundTrack2 = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: path2!), error: nil)
soundTrack2.numberOfLoops = 1
soundTrack2.volume = 0.35
soundTrack2.play()
}

func updateCounter() {
countdownTestLabel.text = String(counter--)

splatterSound()

if counter == 0 {
countdown.invalidate()
//Then trigger segue to Game Scene view
timeToMoveOn()

}
}

在 View 中确实加载了:

counter = 3
countdown = NSTimer.scheduledTimerWithTimeInterval(1, target:self, selector: Selector("updateCounter"), userInfo: nil, repeats: true)

我的问题是每次计时器递减时都会播放音频文件,但它会播放多次。例如,它会快速连续一次,然后是第二次,然后是第三次、第四次和第五次。它不应该这样做。

如何解决这个问题,使其仅在计时器递减时播放?

最佳答案

去掉soundTrack2.numberOfLoops = 1位。 numberOfLoops 设置是重复声音的次数。因此,当计时器第一次触发时,您会将声音排队以连续播放两次。

一秒钟后,您将声音排队再次连续播放两次。

然后,一秒钟后,您将声音排队以连续播放两次。

如果您删除该行,声音将默认为 numberOfLoops=0,或者仅播放一次声音(这就是您想要的。)

关于ios - 每次 NSTimer 递减时播放一次音频文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32937041/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com