在下面的用例中,我尝试为lineWidth
of an SKShapeNode
.
SKEase 是精彩的一部分SpriteKit缓动 https://github.com/craiggrummitt/SpriteKitEasingSwift来自 Craig Grummitt 的 github 存储库。
它的功能之一是浮动变化缓动动作,它似乎会随着时间的推移改变浮动的值。
但是我不知道如何使用它。输入时 Xcode 会给出以下建议:
let lineWeight = SKEase.createFloatTween(<start: CGFloat, end: CGFloat, time: TimeInterval, easingFunction: AHEasingFunction, setterBlock: ((SKNode, CGFloat) -> Void))
借助该库中的其他 SKEase 操作,Xcode 对于轻松类型非常有帮助,并有助于确定要输入的内容。
有了这个,我不知道 AHEasingFunctions 有哪些可用选项...我可能可以找到。
但我完全不知道如何使用最后一部分,setterBlock 似乎期望一个函数采用一对与活动无关的参数。 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 https://github.com/sarah-j-smith/EasingPlay.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)