Awesome
SpriteKit-Spring
SpriteKit-Spring is a set of extensions to perform spring animations with SpriteKit.
Installation
iOS 7
If you need to support iOS 7, you can just drop SpriteKit-Spring.swift in your project.
iOS 8
If you support iOS 8 only, you can install SpriteKit-Spring as a framework with CocoaPods (version 0.36 or above) by adding the following lines to your Podfile
:
use_frameworks!
pod 'SpriteKit-Spring'
You then need to import SpriteKit-Spring wherever you want to use it:
Swift:
import SpriteKit_Spring
Objective-C:
#import <SpriteKit_Spring/SpriteKit_Spring-Swift.h>
Usage
In iOS 7, Apple introduced spring animations in UIKit by adding a new animation method on UIView (see WWDC video and UIView documentation).
This library replicates this feature by adding a spring variant to most factory methods of SKAction. The parameters usingSpringWithDamping:
and initialSpringVelocity:
have the same meaning as their UIKit counterpart. See below for examples.
Examples
Move
let move = SKAction.moveByX(0, y: 200,
duration: 5, delay: 5,
usingSpringWithDamping: 0.2, initialSpringVelocity: 0)
node.runAction(move)
Scale
let scale = SKAction.scaleXTo(2, y: 0.5,
duration: 5, delay: 5,
usingSpringWithDamping: 0.2, initialSpringVelocity: 0)
node.runAction(scale)
Rotate
let rotate = SKAction.rotateByAngle(CGFloat(M_PI/2),
duration: 5, delay: 5,
usingSpringWithDamping: 0.2, initialSpringVelocity: 0)
node.runAction(rotate)
Notes
- Because they use
customActionWithDuration:actionBlock:
, none of these actions is reversible (the reverse action performs the same animation). - All these factory methods are based on the lower level
animateKeyPath:byValue:duration:delay:usingSpringWithDamping:initialSpringVelocity:
andanimateKeyPath:toValue:duration:delay:usingSpringWithDamping:initialSpringVelocity:
methods, which can animate any CGFloat key path. If you have a SKNode subclass with a fancy CGFloat property that you'd like to animate, feel free to use these methods!
Creator
License
SpriteKit-Spring is released under the Apache 2 license. See LICENSE for details.