2015-08-25 98 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

嗨科林,我正在尋找一個淡入淡出。不是延遲。謝謝你 –