我在Swift中有很多不同的场景。每个场景都会简要地为多个对象设置动画。这些对象是完全不同的,并且都以自己独特的方式生成。
问题在于,现在每个场景都有代码行和代码行,所有代码都管理不同的SKAction。有没有办法缩小这种代码,或重组代码,以便我们将它们放在一个地方(并在其他地方绘制)?
我的一个想法是让所有动画节点都成为一个特定的类,比如AnimatedNode,然后将所有的动画放在那里;作为单独的功能。这将有效地从scene.swift文件中删除代码。这是我能做的最好的,还是有其他一些我没看到的方法?
编辑:我的动画代码在每个场景中运行100多行,但作为如何在一个这样的节点上执行动画的示例,这就是它的样子:
// can
let can = bgNode.childNode(withName: "can")
let tip = SKAction.rotate(byAngle: CGFloat(GLKMathDegreesToRadians(10)), duration: 0.5)
let tipSound = SKAction.playSoundFileNamed("pot", waitForCompletion: false)
can?.run(SKAction.sequence([tip, tipSound, tip.reversed()]))
答案 0 :(得分:0)
SKActions旨在重复使用或至少预先加载。你的想法很好,因为一遍又一遍地用相同的代码混乱你的场景是糟糕的设计。
你可以创建一个ActionManager,它具有你想要运行的每个动作的属性,已经预先加载为属性..这将提高你的游戏性能,特别是如果你多次使用它。
有多种方法可以做到这一点,但是一个简单的函数(虽然不像属性那样高性能)是至少组织代码的好方法。