我创建了每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")
感谢您的帮助!
答案 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
或任何其他传递的参数)。相反,我们重新创建与某个键每次相关联的操作。这是关于与键相关的操作的文档:
如果使用相同密钥的操作已在运行,则会将其删除 在添加新动作之前。
因此,每次我们运行与“着色”键相关联的新操作时,先前的操作将被删除,并且该键始终只有一个操作。