【问题标题】:Swift Spritekit image resizing itself after presenting a new sceneSwift Spritekit 图像在呈现新场景后自行调整大小
【发布时间】:2014-10-17 03:10:58
【问题描述】:

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

}

这是移回视图后的图像,比上一个图像略大。

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

【问题讨论】:

    标签: xcode image swift sprite-kit


    【解决方案1】:

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

    1. 在您的 viewController 中,您可能更改了菜单的场景锚点,当您返回菜单时,您没有将其设置为与 viewController 中设置的相同。

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

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

    【讨论】:

      猜你喜欢
      • 2015-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多