我正在创建一个游戏,因此背景颜色为白色:
self.backgroundColor = SKColor.whiteColor()
所以当游戏发起白色时就是背景。我有一个评分系统,所以基本上我希望颜色在达到某个分数时改变:
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()
}
然而,这种方法非常笨重,如果我诚实的话,看起来非常糟糕。我的游戏中的所有内容都是流畅的,并且在使用以下方式从场景中移除时包含淡出:
livesLabel.runAction(SKAction.fadeInWithDuration(0.5))
但我不确定如何使用背景颜色进行此操作。如果我将上面的例子与backgroundColor一起使用,例如
self.backgroundColor = SKAction.fadeInWithDuration(SKColor.purpleColor())
我收到错误“无法使用'(UIColor)'的参数列表调用'fadeInWithDuration'”
注意:我完全理解尝试将背景颜色分配给动画是愚蠢的。但我把那些代码放在那里试图解决我的问题
答案 0 :(得分:3)
要从当前背景颜色平滑过渡到其他颜色,请使用colorizeWithColor
SKAction
。这是一个例子......
runAction(SKAction.colorizeWithColor(SKColor.purpleColor(), colorBlendFactor: 1.0, duration: 2.0))
答案 1 :(得分:2)
将此代码放入viewDidLoad方法中,看看它是否是您要找的内容
self.view.backgroundColor = UIColor.blueColor()
UIView.animateWithDuration(1.0, delay: 1.0, options: nil, animations: { () -> Void in
self.view.backgroundColor = UIColor.greenColor()
}, completion: nil)
如果您正在寻找这样的话,请执行
之类的操作 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))
UIView.animateWithDuration(0.5, animations: { () -> Void in
self.backgroundColor = SKColor.purpleColor()
})
}
else if (score >= 200 && score < 300){
enemy.runAction(SKAction.moveTo(mainBall.position, duration:2))
UIView.animateWithDuration(0.5, animations: { () -> Void in
self.backgroundColor = SKColor.greenColor()
})
}`
答案 2 :(得分:0)
你必须将你的if语句添加到override func update(currentTime: NSTimeInterval)
(每个帧调用此方法)。
另外,我建议您删除if语句之后的(),因为它们是多余的,与backgroundColor之前的self相同。