Swift Spritekit图像在呈现新场景后调整自身大小

时间:2014-10-17 03:10:59

标签: xcode image swift sprite-kit

我在基本SpriteKit模板的第一个屏幕上添加了一个精灵。但是,每当我进入播放场景并返回菜单场景时,图像就会被放大。检查尺寸和比例模式后,一切似乎都正常。我不确定为什么会这样。

这是菜单的代码:

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)
        }

    }
}

移动到下一个场景之前的场景截图:

enter image description here

这是从下一个场景返回菜单的代码,以及返回到屏幕后更改的图像。

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

无论用户从游戏进入菜单多少次,我都需要图像保持不变。

1 个答案:

答案 0 :(得分:1)

我只能想到可能导致这种情况的两件事:

  1. 在viewController中,您可能已经更改了菜单的场景anchorPoint,当您返回菜单时,您不会将其设置为与viewController中设置相同的内容。

  2. 您可能希望使用.ResizeFill而不是.AspectFill

  3. 每次我遇到这个问题,都是因为其中一个。