У меня есть куча таймеров в моем GameScene.swift, которые вызывают функции. Как я могу приостановить эти таймеры, когда пользователь забирает или удваивает нажатие кнопки «домой», получает текстовое сообщение и т. Д.? Прямо сейчас, когда кнопка дома двойным нажатием, в то время как игра работает, счет, который основан на таймере, продолжает расти, и враги все еще порождаются.Приостановка таймеров при нажатии кнопки дома быстро
//Spawn timer for enemy blocks
var timer = NSTimer.scheduledTimerWithTimeInterval(0.4, target: self, selector: Selector("spawnEnemies"), userInfo: nil, repeats: true)
//Timer for keeping score
var scoretimer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: Selector("scoreCounter"), userInfo: nil, repeats: true)
Любая помощь была бы принята с благодарностью!
EDIT: Я добавил эти две строки в моей GameViewController.swift
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("pauseTimers:"), name:UIApplicationWillResignActiveNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("startTimers:"), name:UIApplicationDidBecomeActiveNotification, object: nil)
И тогда эти две функции:
func pauseTimers(notification : NSNotification) {
println("Observer method called")
timer.invalidate()
scoretimer.invalidate()
}
func startTimers(notification : NSNotification) {
println("Observer method called")
timer = NSTimer.scheduledTimerWithTimeInterval(0.4, target: self, selector: Selector("spawnEnemies"), userInfo: nil, repeats: true)
scoretimer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: Selector("scoreCounter"), userInfo: nil, repeats: true)
}
Однако я получаю сообщение об ошибке, потому что, когда я воссоздавать таймеры в startTimers их селектора - это функции в моем GameScene.swift, а не GameViewController.swift. Как я могу это исправить?
Отредактировано мое начальное задание. У меня проблема с воссозданием таймеров после их недействительности. – Darkstar
@Darkstar. На самом деле вы должны задать отдельный вопрос для этого, так как это другая проблема.Проблема в том, что целью ваших таймеров является 'self', а когда вы находитесь в' GameViewController', тогда 'self' является' GameViewController'. Вам нужно либо воссоздать таймеры в 'GameScene', либо вам нужно передать ссылку на ваш объект GameScene вместо' self' в качестве цели. Селектор - это метод, который вызывается, а целью является объект, на который вызывается метод, а 'self' всегда является текущим объектом. – Mecki
Сделал новый вопрос. http://stackoverflow.com/questions/31495906/pausing-and-recreating-timers-with-notifications-issue-swift – Darkstar