Désolé, très nouveau pour swift, et le codage en général, donc cela peut être une question débutant. J'ai actuellement le code ci-dessous en créant des flèches autour d'un cercle. Comment puis-je convertir ceci afin que toutes les flèches apparaissent une seconde après la dernière, jusqu'à ce qu'elles aient toutes été créées? Un utilisateur m'a dit dans un autre thread que cela devrait être accompli en utilisant un runBlock et une séquence SKAction.sequence, mais je ne les connais que très peu. Pourrais-je obtenir de l'aide? Merci! (:Conversion d'une boucle créatrice d'objet à un runBlock avec une attente entre la création de l'objet
override func didMoveToView(view: SKView) {
self.spawnArrows()
}
func spawnArrows() {
for var i = 0; i < 36; i++ {
let arrow = self.createArrow(specificPointOnCircle(Float(self.frame.size.width), center: CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame)), angle: Float(i * 10)))
self.addChild(arrow)
}
}
func specificPointOnCircle(radius:Float, center:CGPoint, angle:Float) -> CGPoint {
let theta = angle * Float(M_PI)/180
let x = radius * cosf(theta)
let y = radius * sinf(theta)
return CGPoint(x: CGFloat(x) + center.x, y: CGFloat(y) + center.y)
}
func createArrow(position: CGPoint) -> SKSpriteNode {
let arrow = SKSpriteNode(imageNamed: "Arrow.png")
arrow.zPosition = 2
arrow.size = CGSize(width: self.frame.size.width/2 * 0.12, height: self.frame.size.width * 0.025)
arrow.position = position
return arrow
}
Merci, cela fonctionne aussi loin qu'un délai d'attente entre la création des flèches! Ils ne sont plus créés autour du cercle, mais ils viennent seulement du côté droit de l'écran. J'imagine que je peux résoudre ce problème en définissant une variable globale pour l'angle et en l'ajoutant dans la boucle for avec une manipulation de la variable – dulongj
Ahh oui je viens de changer l'angle de (i + 10) à une variable globale de i . Merci beaucoup pour votre aide! – dulongj
@appzYourLife Vous ne savez pas si vous l'avez volontairement laissé pour des raisons de simplicité, mais en utilisant un auto comme celui-ci, vous créez un cycle de référence fort et utilisez SKAction.runBlock {[unowned self] dans/* faites vos affaires ici * /} ou en supprimant toutes les actions de la méthode willMoveFromView de la scène, cela empêchera que cela se produise. – Whirlwind