SKEase action,如何使用Float changing Action Setter Block?
SKEase action, how to use Float changing Action Setter Block?
在以下用例中,我尝试为 SKShapeNode
的 lineWidth
设置动画。
SKEase 是 Craig Grummitt 精彩 SpriteKitEasing github 回购的一部分。
其功能之一是浮动更改缓动操作,该操作似乎会随时间更改浮动值。
但是我不知道如何使用它。 Xcode 输入时给出以下建议:
let lineWeight = SKEase.createFloatTween(<start: CGFloat, end: CGFloat, time: TimeInterval, easingFunction: AHEasingFunction, setterBlock: ((SKNode, CGFloat) -> Void))
对于此库中的其他 SKEase 操作,Xcode 对轻松类型非常有帮助,并有助于确定要输入的内容。
有了这个,我不知道 AHEasingFunctions 有哪些选项...我可能会找到。
但我完全不知道最后一部分是什么或如何使用,setterBlock 似乎期待一个函数接受一对与 activity 无关的参数。 XCode 此处不接受 SKShapeNodes 或 SKSpriteNodes,仅接受 SKNode,但我无法超越。
SKEase 的文档是这样描述的:
如果您键入 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 上的一个完整项目。
在以下用例中,我尝试为 SKShapeNode
的 lineWidth
设置动画。
SKEase 是 Craig Grummitt 精彩 SpriteKitEasing github 回购的一部分。
其功能之一是浮动更改缓动操作,该操作似乎会随时间更改浮动值。
但是我不知道如何使用它。 Xcode 输入时给出以下建议:
let lineWeight = SKEase.createFloatTween(<start: CGFloat, end: CGFloat, time: TimeInterval, easingFunction: AHEasingFunction, setterBlock: ((SKNode, CGFloat) -> Void))
对于此库中的其他 SKEase 操作,Xcode 对轻松类型非常有帮助,并有助于确定要输入的内容。
有了这个,我不知道 AHEasingFunctions 有哪些选项...我可能会找到。
但我完全不知道最后一部分是什么或如何使用,setterBlock 似乎期待一个函数接受一对与 activity 无关的参数。 XCode 此处不接受 SKShapeNodes 或 SKSpriteNodes,仅接受 SKNode,但我无法超越。
SKEase 的文档是这样描述的:
如果您键入 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 上的一个完整项目。