扩展SKAction以覆盖timingMode

我在SpriteKit项目中有许多SKActions。 SKAction的默认timingMode是“线性的”。 是否有可能使用扩展来覆盖这个timingMode默认为例如“easeInEaseOut”所以所有的SKActions有timingMode = easeInEaseOut?

Objective-Cselect器'init'与隐式初始值设定项'init()'冲突,但是没有一个会编译 – 通常返回在其自身types中使用的''timingMode''或'Initializer'init与相同的Objective-Cselect器“

文档似乎没有给出任何这样的例子,但肯定这将是一个有用的事情,能够做到? 特别是当你在游戏中有数以百计的SKActions?

select你的毒药,一个扩展动作,让你快速调用.easeInEaseOut定时模式,另一个扩展SKNode让你运行使用特定的定时模式。

没有办法改变默认行为,唯一的办法就是为每一个存在的动作创build自己的静态方法,这可能会变得麻烦。

extension SKAction { //eg SKAction.move(to: CGPoint.zero, duration: 10).easeInEaseOut() func easeInEaseOut() -> SKAction { self.timingMode = .easeInEaseOut return self } } extension SKNode { func runWithEaseInEaseOut(action:SKAction,withKey key: String = "") { action.timingMode = .easeInEaseOut if key != "" { self.run(action,withKey:key) } else { self.run(action) } } }