2015-08-25 63 views
1

我创建一个游戏,背景色为白色,开始用,因此:斯威夫特:背景颜色褪色动画(SpriteKit)

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()) 

我得到错误“不能援引‘fadeInWithDuration’有型‘(的UIColor)’参数列表”

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

回答

3

要顺利过渡将当前背景颜色改为不同的颜色,请使用colorizeWithColorSKAction。下面是一个例子...

runAction(SKAction.colorizeWithColor(SKColor.purpleColor(), colorBlendFactor: 1.0, duration: 2.0)) 
0

您必须将您的if语句添加到override func update(currentTime: NSTimeInterval)(此方法每帧调用一次)。

另外,我建议你在if语句之后删除(),因为它们是多余的,在backgroundColor之前自我也是如此。

+0

我的if语句是函数,也谢谢你的指针内,但您的评论并没有帮助我的情况 –

+0

我试过在一个示例项目,它为我工作。你可以做的是跟踪带有断点的'分数',看看问题是否在其他地方。 –

+0

朱莉娅你不明白我的问题。评分系统非常好。我试图用动画改变背景,所以它基本上褪色了。 –

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() 
    }) 
    }` 
+0

嗨科林,我正在寻找一个淡入淡出。不是延迟。谢谢你 –