我创建了每 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)
在 Action 序列中将始终将背景着色为相同的颜色。这会发生,因为当您创建一次 Action 时,您无法随时间更改它(例如,您可以更改其速度或暂停它,但您无法更改
duration
或任何其他传递的参数)。相反,我们 重新创建 与某个键相关的操作每次 .这是来自有关与键关联的操作的文档:If an action using the same key is already running, it is removed before the new action is added.
因此,每次我们运行与“着色”键相关联的新 Action 时,前一个 Action 都会被删除,并且始终只有一个带有该键的 Action 。
关于ios - 如何创建到 SKAction 的过渡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35815403/