sprite-kit
Временные функции в SpriteKit: SKActions vs NSTimers
Поиск…
замечания
Когда вы должны использовать SKAction
s для выполнения функций таймера? Почти всегда. Причина этого заключается в том, что Sprite Kit
работает с интервалом обновления, и скорость этого интервала может быть изменена в течение всего жизненного цикла процесса с использованием свойства speed
. Сцены также могут быть приостановлены. Поскольку SKAction
работает внутри сцены, когда вы изменяете эти свойства, нет необходимости изменять свои функции времени. Если ваша сцена составляет 0,5 секунды в процессе, и вы приостанавливаете сцену, вам не нужно останавливать никаких таймеров и сохранять эту разницу в 0,5 секунды. Он предоставляется вам автоматически, так что когда вы приостанавливаете, оставшееся время продолжается.
Когда вы должны использовать NSTimer
для выполнения функций таймера? Всякий раз, когда у вас есть что-то, что нужно синхронизировать вне среды SKScene
, а также должно быть SKScene
даже в том случае, если сцена остановлена или должна срабатывать с постоянной скоростью даже при изменении скорости сцены.
Это лучше всего использовать при работе с UIKit
управления SpriteKit
и SpriteKit
управления SpriteKit
. Поскольку UIKit
не имеет представления о том, что происходит с SpriteKit
, NSTimer
независимо от состояния SKScene
. Например, мы будем иметь UILabel
который получает обновление каждую секунду, и ему нужны данные из вашего SKScene
.
Реализация метода, который срабатывает через одну секунду
SKAction:
let waitForOneSecond = SKAction.waitForDuration(1) let action = SKAction.runBlock(){action()} let sequence = SKAction.sequence([waitForOneSecond,action]) self.runAction(sequence)
NSTimer:
NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: #selector(action), userInfo: nil, repeats: false)