问题
The following code will animate a rotation.
let something:SKSpriteNode = SKSpriteNode()
func start(){
let rotateAction = SKAction.rotateToAngle(CGFloat(M_PI), duration: 10.0)
something.runAction(SKAction.sequence([rotateAction]))
}
Now I want to stop the animation within the animating duration. Is there anything similar to the following? I want to stop the animation when the user touches the screen.
func stop(){
something.SKAction.stop()
}
回答1:
You just have to use either:
something.paused = false // or true
to pause actions on the nodesomething.removeAllActions()
to definitely remove actions associated to the node- name your action when launching
something.runAction(action,withKey:"action1")
and thensomething.removeActionForKey("action1")
to remove a given action
You may also change the speed if needed.
回答2:
Firstly, run the action with a key so you can identify it later:
something.runAction(rotateAction, withKey: "rotate action")
Then you can stop it later by calling
something.removeActionForKey("rotate action")
Alternatively, you can remove all actions also
something.removeAllActions()
来源:https://stackoverflow.com/questions/35502326/stopping-an-running-skaction-sprite-kit