2015-12-08 55 views
0

我提前道歉,如果這是一個愚蠢的問題,但我學習,我似乎無法找到任何幫助。我的大部分經驗都是在故事板上,所以SpriteKit是我第一次以編程方式做所有事情的真正嘗試。如何使用SpriteKit替換背景圖片?

我有一個橫向卷軸2D遊戲非常相似,笨鳥先飛。每當玩家得分爲10的倍數時,我需要改變背景。背景是正在緩慢移動到屏幕左側並由其自身取代的一個圖像。

的問題是,當它擊中10,我不能與其他圖像替換圖像。我已經成功地將使用z位置舊的頂新形象,但原來的圖像仍然之下,這似乎笨拙和不穩定。

我試圖從父刪除原來的背景圖片,但我似乎無法弄清楚如何做到這一點。

這是我的代碼。提前致謝。

var currentBg = SKTexture(imageNamed: "img/bgYellow.png") 

func makeBackground() { 

    let movebg = SKAction.moveByX(-currentBg.size().width, y: 0, duration: 9) 
    let replacebg = SKAction.moveByX(currentBg.size().width, y: 0, duration: 0) 
    let movebgForever = SKAction.repeatActionForever(SKAction.sequence([movebg, replacebg])) 

    for var i:CGFloat=0; i<3; i++ { 

     bg = SKSpriteNode(texture: currentBg) 
     bg.position = CGPoint(x: currentBg.size().width/2 + currentBg.size().width * i, y: CGRectGetMidY(self.frame)) 
     bg.size.height = self.frame.height 
     bg.runAction(movebgForever) 
     movingObjects.addChild(bg) 

    } 

} 

fun didMoveToView() { 

     //Set up game, etc... 

     makeBackground() 

} 

if score == 10 { 

     //I've tried adding the following line to remove the first image, but no luck 
     //movingObjects.removeChildrenInArray([bg])   

     currentBg = SKTexture(imageNamed: "img/bgRed.png") 
     makeBackground() 

} else if score == 20 { 

     currentBg = SKTexture(imageNamed: "img/bgBlue.png") 
     makeBackground() 

} //Else etc... 

回答

0

您正在更改紋理而不是您的background節點紋理。

var background: SKSpriteNode! 

然後,你需要創建你的背景

background = SKSpriteNode(texture: SKTexture(imageNamed: "img/bgYellow.png"), color: UIColor.clearColor(), size: CGSizeMake(world.frame.size.width, world.frame.size.height)) 
    background.position = CGPointMake(world.frame.size.width/2, world.frame.size.height/2) 
    // etc 

要改變你的背景圖片:

if score == 10 { 

    background.texture = SKTexture(imageNamed: "img/bgRed.png") 
    makeBackground() 
}