Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode Swift Spritekit图像在呈现新场景后自行调整大小_Xcode_Image_Swift_Sprite Kit - Fatal编程技术网

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

Xcode Swift Spritekit图像在呈现新场景后自行调整大小,xcode,image,swift,sprite-kit,Xcode,Image,Swift,Sprite Kit,我正在向基本SpriteKit模板的第一个屏幕添加一个精灵。但是,每当我进入播放场景并返回菜单场景时,图像就会放大。检查大小和缩放模式后,一切似乎正常。我不确定为什么会发生这种情况 这是菜单的代码: let playButton = SKSpriteNode(imageNamed: "play") override func didMoveToView(view: SKView) { /* Setup your scene here */ //Place button in

我正在向基本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)
        }

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

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

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

}
这是移回视图后的图像,它比前一个图像稍大


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

我只能想到两个原因:

  • 在viewController中,您可能已更改了菜单的场景锚点,当返回菜单时,您不会将其设置为与在viewController中设置的相同

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

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