Swift:背景颜色淡入淡出动画(SpriteKit)

Sma*_*end 1 background fade ios sprite-kit swift

我正在创建一个游戏,背景颜色一开始就是白色的:

self.backgroundColor = SKColor.whiteColor()
Run Code Online (Sandbox Code Playgroud)

所以当游戏开始时白色是背景。我有一个评分系统,所以本质上我希望在达到一定分数时颜色发生变化,因此:

if score < 100{
            enemy.runAction(SKAction.moveTo(mainBall.position, duration:3))  
        }
        else if score >= 100 && score < 200{
            enemy.runAction(SKAction.moveTo(mainBall.position, duration:2.5))
            self.backgroundColor = SKColor.purpleColor()
        }
        else if score >= 200 && score < 300{
            enemy.runAction(SKAction.moveTo(mainBall.position, duration:2))
            self.backgroundColor = SKColor.greenColor()
        }
Run Code Online (Sandbox Code Playgroud)

然而,老实说,这种方法非常笨拙,看起来非常糟糕。我的游戏中的所有内容都是流畅的,并且在使用以下方式从场景中移除时包含淡入淡出:

livesLabel.runAction(SKAction.fadeInWithDuration(0.5))
Run Code Online (Sandbox Code Playgroud)

但我不确定如何使用背景颜色来做到这一点。如果我将上面的示例与背景颜色一起使用,例如

self.backgroundColor = SKAction.fadeInWithDuration(SKColor.purpleColor())
Run Code Online (Sandbox Code Playgroud)

我收到错误“无法使用类型为‘(UIColor)’的参数列表调用‘fadeInWithDuration’”

注意:我完全理解尝试为动画分配背景颜色是愚蠢的。但我把代码放在那里试图解决我的问题

0x1*_*41E 5

要从当前背景颜色平滑过渡到其他颜色,请使用colorizeWithColor SKAction. 这是一个例子...

runAction(SKAction.colorizeWithColor(SKColor.purpleColor(), colorBlendFactor: 1.0, duration: 2.0))
Run Code Online (Sandbox Code Playgroud)