Итак, в общем, это то, что я хочу, чтобы моя программа выполняла: музыка будет воспроизводить, произвольно генерировать число от 3 до 12, а затем установить таймер в соответствии с этим номером, когда таймер закончен, остановите музыку в течение 1 секунды , затем после этого одну секунду снова воспроизведите музыку (и повторите процесс, создайте случайное число ...)Swift: проблема с моим NSTimer?
Это код, который я написал для этого, он отлично работает, первый запуск, но второй запуск она начинает вызывать функции на более быстрыми темпами (не после таймера), а иногда и в другом порядке (вы можете проверить это, глядя на распечатки)
var randomTimeInteger = Int()
var stopMusicTimer = NSTimer()
var startMusicTimer = NSTimer()
override func viewDidLoad(){
playMusic()
}
//Call to get random interger
func generateRandomInteger(){
print("Inside generate random integer")
let lower = 3
let upper = 12
randomTimeInteger = lower + Int(arc4random_uniform(UInt32(upper - lower + 1)))
print("Random Integer is : \(randomTimeInteger)")
initiateTimer()
}
//Start the timer
func initiateTimer() {
print("Inside initate Timer")
//Set Timer
stopMusicTimer = NSTimer.scheduledTimerWithTimeInterval(Double(randomTimeInteger), target: self, selector: "stopMusic", userInfo: nil, repeats: true)
}
//Stop the music
func stopMusic(){
print("Inside stop music")
GameViewController.backgroundAudio?.stop()
startMusicTimer = NSTimer.scheduledTimerWithTimeInterval(3.0, target: self, selector: "playMusic", userInfo: nil, repeats: true)
}
func playMusic(){
print("Inside play music")
GameViewController.backgroundAudio?.play()
generateRandomInteger()
}
Любая идея, что проблема? Или, если есть лучший способ сделать это? ПОЖАЛУЙСТА ПОМОГИ!
Удивительно. Я не знаю, почему я этого не видел. спасибо – OriginalAlchemist