2015-02-27 2 views
0

У меня две сцены. GameScene и PlayScene. GameScene - это скорее «домашний экран», в то время как PlayScene - это настоящий игровой процесс. При переходе на PlayScene все нормально.SpriteNodes испортились после возвращения в GameScene (Swift)

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { 

    for touch: AnyObject in touches { 
     let location = touch.locationInNode(self) 

     if self.nodeAtPoint(location) == self.playbutton { 

      let scaleDown = SKAction.scaleBy(0.01, duration: 1.0) 

      self.playbutton.runAction(scaleDown) 

      var scene = PlayScene(size: self.size) 
      let skView = self.view as SKView! 
      scene.size = skView.bounds.size 

      let transition = SKTransition.pushWithDirection(SKTransitionDirection.Left, duration: 3) 

      transition.pausesOutgoingScene = false 
      skView.presentScene(scene, transition: transition) 

     } 
    } 
} 

... Однако, когда кто-то отправляется обратно в GameScene после нажатия на кнопку «Повтор» в PlayScene, все узлы в GameScene перепутались. Их размеры увеличены, и один узел даже обращен назад.

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { 

    let touch = touches.anyObject() as UITouch 
    let touchLocation = touch.locationInNode(self) 

     isFingerTouching = true 


    if self.nodeAtPoint(touchLocation) == self.facebookButton { 
     facebookButtonPushed() 
    } 

    if self.nodeAtPoint(touchLocation) == self.twitterButton { 
     twitterButtonPushed() 
    } 

    if self.nodeAtPoint(touchLocation) == self.replay { 

     var scene = GameScene(size: self.size) 
     let skView = self.view as SKView! 
     scene.size = skView.bounds.size 

     let transition = SKTransition.crossFadeWithDuration(1.0) 
     transition.pausesOutgoingScene = false 
     skView.presentScene(scene, transition: transition) 

    } 

} 

Я не уверен, как это происходит, но любая помощь будет отличной. Спасибо!

ответ

1

У меня была та же проблема. Вам нужно установить scaleMode (смотрите здесь для получения дополнительной информации о «scaleMode»). Просто введите этот код в свой видDidLoad() для быстрого:

self.scaleMode = .AspectFill 

Надеюсь, это помогло.

Смежные вопросы