sprite-kit
Tidsinställda funktioner i SpriteKit: SKActions vs NSTimers
Sök…
Anmärkningar
När ska du använda SKAction
att utföra timerfunktioner? Nästan alltid. Anledningen till detta är att Sprite Kit
arbetar med ett uppdateringsintervall, och hastigheten på detta intervall kan ändras under hela livslängden för processen med hjälp av speed
. Scener kan också pausas också. Eftersom SKAction
arbetar inuti scenen behöver du inte ändra dina tidsfunktioner när du ändrar dessa egenskaper. Om din scen är 0,5 sekunder in i processen och du pausar scenen behöver du inte stoppa några tidtagare och behålla den 0,5 sekunders skillnaden. Det ges till dig automatiskt, så att när du avbryter pausen, återstår tiden kvar.
När ska du använda NSTimer
att utföra timerfunktioner? När du har något som måste tidsinställas utanför SKScene
miljön, och som också måste avfyras även när scenen är pausad, eller behöver avfyras i konstant takt även när scenhastigheten ändras.
Detta används bäst när du arbetar med både UIKit
kontroller och SpriteKit
kontroller. Eftersom UIKit
har någon aning om vad som händer med SpriteKit
kommer NSTimer
att skjuta oavsett SKScene
. Ett exempel skulle vara att vi har en UILabel
som får en uppdatering varje sekund, och den behöver data inifrån din SKScene
.
Implementera en metod som avfyras efter en sekund
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)