如何创建转换到SKAction?
问题描述:
我创建的功能,每10秒更改我的背景颜色 ,我想添加转换时,它改变背景的颜色。如何创建转换到SKAction?
游戏场景:
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
或任何其他传递的参数)。相反,我们重新创建与每个时间点某个键相关联的操作。这是约行动与键相关的文档:
如果使用相同的密钥的操作已在运行,它被删除 添加新的行动之前。
因此,每次我们运行一个新的动作,与“着色”键相关联时,先前的动作将被删除,并且总是只有一个动作。
您是否试图从一种颜色转换到另一种颜色,或者您正在尝试进行到另一场景的转换(SKTransition)? :) – Whirlwind
我试图从一种颜色过渡到另一种 –