2014-10-17 66 views
0

我在基本SpriteKit模板的第一個屏幕中添加了一個精靈。但是,無論何時我進入播放場景並返回到菜單場景,圖像都會放大。在檢查大小和縮放模式後,一切似乎都正常。我不確定爲什麼會發生這種情況。Swift Spritekit在呈現新場景後自行調整圖像大小

這是菜單代碼:

enter image description here

這是從一個場景返回菜單代碼:移動到下一個場景前

let playButton = SKSpriteNode(imageNamed: "play") 


override func didMoveToView(view: SKView) 
{ 
    /* Setup your scene here */ 

    //Place button in exact middle of the screen 
    self.playButton.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame)) 

    addChild(self.playButton) 

    self.backgroundColor = UIColor.blueColor() 

} 

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) 
{ 
    /* Called when a touch begins */ 

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

     if self.nodeAtPoint(location) == self.playButton 
     { 
      var scene = PlayJumper() 
      let sKView = self.view as SKView! 
      sKView.ignoresSiblingOrder = true 
      scene.scaleMode = .AspectFill 
      scene.size = sKView.bounds.size 

      sKView.presentScene(scene) 
     } 

    } 
} 

場景截圖,以及返回到屏幕後更改的圖像。

import SpriteKit 

class PlayJumper : SKScene 
{ 


override func didMoveToView(view: SKView){ 
    self.backgroundColor = UIColor.orangeColor() 
} 

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) 
{ 
    for touch: AnyObject in touches 
    { 
     endGame() 
    } 
} 

func endGame() 
{ 
    if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene 
    { 
     let sKView = self.view as SKView! 
     sKView.ignoresSiblingOrder = true 
     scene.size = sKView.bounds.size 
     scene.scaleMode = .AspectFill 
     sKView.presentScene(scene) 
    } 
} 

} 

這是回到視圖後的圖像,它比以前的圖像稍大。

enter image description here

我需要的圖像保持不變,不管用戶從遊戲菜單中有多少次去。

回答

0

我只能想到兩件事情可能導致此:

  1. 在你的viewController,您可能已經改變菜單的場景anchorPoint,當你回到菜單中,您沒有設置它作爲它在viewController中設置的相同的東西。

  2. 您可能需要使用.ResizeFill而不是.AspectFill

每次我遇到過這個問題,這是這些因之一。