Поиск…


замечания

Когда вы должны использовать 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)



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow