在Swift中组织动画

问题描述:

我在Swift中有许多不同的场景。每个场景简要地动画多个对象。这些对象是不同的,并以他们自己独特的方式动画。在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

不要缩小代码。但是你可以把动画例程放在'extension'中。将扩展方法放在扩展中不仅可以保持代码的逻辑组织,还可以让您在关注代码的其他部分时“折叠”扩展。或者你可以把它放在单独的类(特别是如果有任何重用)。我想我们必须看到一些示例程序,并且看看你打算如何处理这些功能。 – Rob

+0

我在上面添加了更多信息! – illuminatedtype

SKActions的意思是重新使用或至少预先加载。你的想法很好,因为一遍又一遍地用相同的代码混淆你的场景是糟糕的设计。

,您可根据ActionManager,具有用于要运行已预先加载的属性..这会增加你的游戏性能,特别是如果你正在使用它不止一次每个动作的属性。

有多种方法可以做到这一点,但一个普通的功能(虽然不是高性能属性)是至少组织代码的一个好办法。

+0

谢谢。通过ActionManager,你的意思只是一个单独的类或库,它有各种功能被拉入游戏场景文件中? – illuminatedtype

+0

实际上不需要“ActionManager”,一个简单的扩展类就足够了,并且与SKAction的实现方式保持一致。 – Knight0fDragon

+0

@ Knight0fDragon你能提供一个这样做的例子吗?我会延伸什么? – illuminatedtype