2015-05-07 3 views
0

Я пытаюсь прокрутить фон игры по вертикали, и это работает в течение некоторого времени, а затем фон становится пустым. это то, что я пробовал:Проблема с прокруткой фона по вертикали с комплектом спрайтов

var background = SKSpriteNode(imageNamed: "bgPlayScene") 

func addBG() { 

    let backgroundTexture = SKTexture(imageNamed: "bgPlayScene") 

    let shiftBackground = SKAction.moveToY(-backgroundTexture.size().height, duration: 9) 
    let replaceBackground = SKAction.moveToY(backgroundTexture.size().height, duration: 0) 
    let movingAndReplacingBackground = SKAction.repeatActionForever(SKAction.sequence([shiftBackground,replaceBackground])) 

    for var i = 0; i<3; i++ { 
     println(i) 
     //defining background; giving it height and moving width 
     background=SKSpriteNode(texture:backgroundTexture) 
     background.position = CGPoint(x: self.size.width/2, y: self.size.height/2) 
     background.size.width = self.frame.width 
     background.runAction(movingAndReplacingBackground) 

     self.addChild(background) 
    } 
} 

Это то, что я получаю: http://gyazo.com/3da3a267aeb030225fdb8c0d563276aa Я не знаю, что я missing.Please, дайте мне знать, если есть еще один лучший способ сделать это.

+0

Вы должны иметь два прокрутку фона для бесконечной прокрутки: http://stackoverflow.com/a/20020023/437146 – NightFury

ответ

4

Как было предложено iAnum я получил ответ от этого post и вот мой код:

Таким образом, добавить 2 фона.

func addScrollingBG() { 

    bg1 = SKSpriteNode(imageNamed: "bgPlayScene") 
    bg1.anchorPoint = CGPointZero 
    bg1.position = CGPointMake(0, 0) 
    bg1.size = CGSize(width: frame.size.width, height: frame.size.height) 
    addChild(bg1) 

    bg2 = SKSpriteNode(imageNamed: "bgPlayScene") 
    bg2.anchorPoint = CGPointZero 
    bg2.position = CGPointMake(0, bg1.size.height + 1) 
    bg2.size = CGSize(width: frame.size.width, height: frame.size.height) 
    self.addChild(bg2) 

} 

И это мой метод обновления:

override func update(currentTime: NSTimeInterval) { 

    bg1.position = CGPointMake(bg1.position.x, bg1.position.y-4) 
    bg2.position = CGPointMake(bg2.position.x, bg2.position.y-4) 

    if bg1.position.y < -bg1.size.height { 
     bg1.position = CGPointMake(bg1.position.x, bg2.position.y + bg2.size.height) 
    } 
    if bg2.position.y < -bg2.size.height { 
     bg2.position = CGPointMake(bg2.position.x, bg1.position.y + bg1.size.height) 
    } 
} 
Смежные вопросы