sprite-kit
Funkcje czasowe w SpriteKit: SKActions vs NSTimers
Szukaj…
Uwagi
Kiedy należy używać SKAction
s do wykonywania funkcji timera? Prawie zawsze. Powodem tego jest to, że Sprite Kit
działa w interwale aktualizacji, a szybkość tego interwału można zmieniać przez cały czas życia procesu za pomocą właściwości speed
. Sceny można również wstrzymać. Ponieważ SKAction
działa wewnątrz sceny, po zmianie tych właściwości nie ma potrzeby zmiany funkcji czasu. Jeśli Twoja scena trwa 0,5 sekundy, a wstrzymasz scenę, nie musisz zatrzymywać żadnych timerów i zachować tej 0,5-sekundowej różnicy. Otrzymuje się go automatycznie, aby po wstrzymaniu pozostały czas był kontynuowany.
Kiedy należy używać NSTimer
s do wykonywania funkcji timera? Ilekroć masz coś, co musi być SKScene
poza środowiskiem SKScene
, a także musi zostać wystrzelone, nawet gdy scena jest zatrzymana lub musi strzelać ze stałą prędkością, nawet gdy zmienia się szybkość sceny.
Jest to najlepiej stosowane podczas pracy zarówno z kontrolkami UIKit
jak i SpriteKit
. Ponieważ UIKit
nie ma pojęcia o tym, co się dzieje z SpriteKit
, NSTimer
s będzie strzelał niezależnie od stanu SKScene
. Przykładem może być UILabel
który co sekundę otrzymuje aktualizację i potrzebuje danych z Twojego SKScene
.
Wdrożenie metody, która uruchamia się po jednej sekundzie
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)