sprite-kit
Fonctions temporelles dans SpriteKit: SKActions vs NSTimers
Recherche…
Remarques
Quand devriez-vous utiliser SKAction
s pour exécuter les fonctions de minuterie? Presque toujours. La raison en est que Sprite Kit
fonctionne sur un intervalle de mise à jour et que la vitesse de cet intervalle peut être modifiée pendant toute la durée de vie du processus en utilisant la propriété speed
. Les scènes peuvent également être interrompues. Depuis que SKAction
travaille dans la scène, lorsque vous modifiez ces propriétés, vous n'avez pas besoin de modifier vos fonctions temporelles. Si votre scène dure 0,5 seconde et que vous suspendez la scène, vous n'avez pas besoin d'arrêter les minuteries et de conserver cette différence de 0,5 seconde. Il vous est donné automatiquement, de sorte que lorsque vous ne le faites pas, le temps restant continue.
Quand devriez-vous utiliser NSTimer
pour effectuer des fonctions de minuterie? Chaque fois que vous avez quelque chose qui doit être chronométré en dehors de l'environnement SKScene
, et doit également être déclenché même lorsque la scène est en pause, ou doit se déclencher à un rythme constant même lorsque la vitesse de la scène change.
Ceci est préférable lorsque vous travaillez avec les contrôles UIKit
et les contrôles SpriteKit
. Comme UIKit
n'a aucune idée de ce qui se passe avec SpriteKit
, NSTimer
se déclenche quel que soit l'état du SKScene
. Un exemple serait que nous ayons un UILabel
qui reçoit une mise à jour toutes les secondes et qui a besoin de données provenant de votre SKScene
.
Implémenter une méthode qui se déclenche après une seconde
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)