sprite-kit
Tijdfuncties in SpriteKit: SKActions vs NSTimers
Zoeken…
Opmerkingen
Wanneer moet u SKAction
s gebruiken om timerfuncties uit te voeren? Bijna altijd. De reden hiervoor is dat Sprite Kit
werkt met een update-interval en de snelheid van dit interval kan worden gewijzigd gedurende de levensduur van het proces met behulp van de eigenschap speed
. Scènes kunnen ook worden gepauzeerd. Aangezien SKAction
binnen de scène werkt, hoeft u uw tijdfuncties niet te wijzigen wanneer u deze eigenschappen SKAction
. Als uw scène 0,5 seconde in het proces zit en u de scène pauzeert, hoeft u geen timers te stoppen en dat verschil van 0,5 seconde te behouden. Het wordt automatisch aan u gegeven, zodat de resterende tijd wordt voortgezet wanneer u de pauze opheft.
Wanneer moet u NSTimer
s gebruiken om timerfuncties uit te voeren? Wanneer u iets hebt dat getimed moet worden buiten de SKScene
omgeving, en ook moet worden afgevuurd, zelfs wanneer de scène is gepauzeerd, of moet met een constante snelheid worden afgevuurd, zelfs wanneer de SKScene
verandert.
Dit wordt het best gebruikt bij het werken met zowel UIKit
besturingselementen als SpriteKit
besturingselementen. Aangezien UIKit
geen idee heeft van wat er gebeurt met SpriteKit
, NSTimer
's ongeacht de status van de SKScene
. Een voorbeeld zou zijn dat we een UILabel
die elke seconde een update ontvangt en gegevens nodig heeft vanuit uw SKScene
.
Implementeren van een methode die na een seconde vuurt
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)