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