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)