如何创建过渡到SKAction?

时间:2016-03-05 14:40:23

标签: ios sprite-kit swift2

我创建了每10秒更改背景颜色的功能 我想在改变背景颜色时添加转换。

游戏场景:

let wait = SKAction.waitForDuration(10)

        let block = SKAction.runBlock({
            [unowned self] in
            self.backgroundColor = UIColor.randomColor()
            })


        let sequence = SKAction.sequence([wait,block])

        runAction(SKAction.repeatActionForever(sequence), withKey: "colorizing")

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

你可以这样做:

override func didMoveToView(view: SKView) {

   colorize()
}


func colorize(){

     let colorize = SKAction.sequence([

          SKAction.colorizeWithColor(UIColor.randomColor(), colorBlendFactor: 1, duration: 3),

          SKAction.runBlock({[unowned self] in self.colorize()})
      ])

     runAction(colorize, withKey: "colorizing")
}

这是递归函数,每次colorizeWithColor操作完成时调用自身。这是必需的,因为只需重复这个:

 SKAction.colorizeWithColor(UIColor.randomColor(), colorBlendFactor: 1, duration: 3)
动作序列中的

将使背景颜色始终为相同颜色。这将发生,因为当您创建一次操作时,您无法随时间更改它(例如,您可以更改其速度或暂停它,但您无法更改duration或任何其他传递的参数)。相反,我们重新创建与某个键每次相关联的操作。这是关于与键相关的操作的文档:

  

如果使用相同密钥的操作已在运行,则会将其删除   在添加新动作之前。

因此,每次我们运行与“着色”键相关联的新操作时,先前的操作将被删除,并且该键始终只有一个操作。