我创建了每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")

感谢帮助!

最佳答案

您可以这样做:

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或任何其他传递的参数),而是每次时,重新创建与特定键相关联的操作。这是来自文档的有关与键关联的操作的信息:

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

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

关于ios - 如何创建向SKAction的过渡?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35815403/

10-12 00:15
查看更多