在以下用例中,我正在尝试为lineWidth
的{{1}}设置动画。
SKEase是Craig Grummitt精彩的SpriteKitEasing github回购的一部分。
其中一个功能是浮动更改缓动操作,它似乎会随着时间的推移改变浮动值。
但我无法弄清楚如何使用它。在输入时,Xcode提供以下建议:
SKShapeNode
使用此库中的其他SKEase操作,Xcode非常有助于简化类型,并帮助确定要输入的内容。
有了这个,我不知道AHEasingFunctions有哪些选项......我可以找到它。
但我完全不知道使用最后一部分是什么或如何使用,setterBlock似乎期望一个函数采用与活动无关的一对参数。 XCode在这里不接受SKShapeNodes或SKSpriteNodes,只接受SKNode,但我不能超越它。
以下是SKEase的文档如何描述它:
答案 0 :(得分:1)
如果您键入let fn = SKEase.getEaseFunction(
,然后键入曲线类型和缓动类型的枚举类型的点,您将获得完成。
使用SKNode到SKShapeNode,你将不得不施展。
以下是一些代码:
let fn = SKEase.getEaseFunction(.curveTypeQuadratic, easeType: .easeTypeInOut)
let easeFat = SKEase.createFloatTween(2.5, end: 30.0, time: easeTime/2, easingFunction: fn) { (node: SKNode, param: CGFloat) in
let spinny = node as! SKShapeNode
spinny.lineWidth = param
}
let easeThin = SKEase.createFloatTween(30.0, end: 2.5, time: easeTime/2, easingFunction: fn) { (node: SKNode, param: CGFloat) in
let spinny = node as! SKShapeNode
spinny.lineWidth = param
}
if let spinnyNode = self.spinnyNode {
spinnyNode.lineWidth = 2.5
let rotate = SKAction.rotate(byAngle: CGFloat(M_PI) * CGFloat(2.0), duration: easeTime)
let easeFatThin = SKAction.sequence([easeFat, easeThin])
let rotateAndEase = SKAction.group([rotate, easeFatThin])
spinnyNode.run(SKAction.repeatForever(rotateAndEase))
spinnyNode.run(SKAction.sequence([SKAction.wait(forDuration: easeTime),
SKAction.fadeOut(withDuration: easeTime),
SKAction.removeFromParent()]))
}
我的GitHub上有一个完整的项目。