2 votes

SKAction.removeFromParent ne supprime pas un sprite avec SKAction.repeatActionForever

La méthode .removeFromParent() ne supprime pas le sprite. Quel est le problème ?

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    guard touches.first != nil else  {
        return
    }

    let myShot = SKSpriteNode()
    let myShotAnimation = SKAction.repeatActionForever(SKAction.animateWithTextures(myShotTexture, timePerFrame: 0.01))
    myShot.size = CGSizeMake(200, 200)
    myShot.anchorPoint = CGPoint(x: 0.5, y: 0.5)
    myShot.zPosition = 0
    sprite!.addChild(myShot)
    let myShotAction = SKAction.group([SKAction.scaleBy(0.1, duration: 0.5), myShotAnimation])
    let actionRemove = SKAction.removeFromParent()
    myShot.runAction (SKAction.sequence([myShotAction, actionRemove]))

}

Le sprite "myShot" avec animation ne disparaît pas

3voto

mrhevor Points 18

Tout simplement parce que actionRemove ne sera jamais appelé.

Quand vous lancez :

myShot.runAction (SKAction.sequence([myShotAction, actionRemove]))

en exécutant séquentiellement les myShotAction SKAction et, lorsqu'il est terminé, le bouton actionRemove . Mais si la première SKAction est une action qui ne se termine jamais ( SKAction.repeatActionForever (répétition de l'action) ), le actionRemove ne sera jamais appelé.

0voto

SashDing Points 92

Madhouse. J'ai remplacé l'action

 SKAction.repeatActionForever

par action

SKAction.repeatAction

et tout a fonctionné.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X