如何创建转换到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") 

感谢您的帮助!

+0

您是否试图从一种颜色转换到另一种颜色,或者您正在尝试进行到另一场景的转换(SKTransition)? :) – Whirlwind

+0

我试图从一种颜色过渡到另一种 –

你可以这样说:

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或任何其他传递的参数)。相反,我们重新创建与每个时间点某个键相关联的操作。这是约行动与键相关的文档:

如果使用相同的密钥的操作已在运行,它被删除 添加新的行动之前。

因此,每次我们运行一个新的动作,与“着色”键相关联时,先前的动作将被删除,并且总是只有一个动作。