SKAction waitForDuration () bloquant la séquence SKAction

self.runAction(SKAction.sequence([ SKAction.waitForDuration(1), SKAction.runBlock({ self.speed = 0; print("pause") }), SKAction.waitForDuration(0.1), SKAction.runBlock({ self.speed = realSpeed; print("resume") }) ])) 

La dernière skaction n'est pas appelée.

Mais quand j'enlève la seconde waitForDuration, la dernière skaction est appelée.

 self.runAction(SKAction.sequence([ SKAction.waitForDuration(1), SKAction.runBlock({ self.speed = 0; print("pause") }), SKAction.runBlock({ self.speed = realSpeed; print("resume") }) ])) 

Que se passe-t-il ici?

La propriété de speed un noeud affecte la vitesse d'exécution des actions exécutées sur ce noeud. De la docs,

La valeur par défaut est 1.0, ce qui signifie que toutes les actions sont exécutées à leur vitesse normale. Si vous définissez une vitesse différente, le time semble courir plus vite ou plus lentement pour toutes les actions exécutées sur le nœud et ses descendants. Par exemple, si vous définissez une valeur de vitesse de 2,0, les actions sont deux fois plus rapides.

Dans votre premier runBlock , vous définissez la propriété speed de self sur 0. La seconde action waitForDuration s'exécute alors infiniment lentement (en supposant que actualDuration = duration/speed ).