【问题标题】:Sprite Kit SKSpriteNode drawn outside screenSprite Kit SKSpriteNode 在屏幕外绘制
【发布时间】:2014-06-16 13:38:07
【问题描述】:

GameScene.swift:

override func didMoveToView(view: SKView) {

    self.backgroundColor = SKColor.whiteColor()

    self.player = SKSpriteNode(imageNamed:"player")
    self.player.position = CGPointMake(100, 100)
    self.player.size = CGSize(width: self.player.size.width*2, height: self.player.size.height*2)
    self.addChild(self.player)

}

GameViewController.swift:

override func viewWillLayoutSubviews() {
    super.viewWillLayoutSubviews()

    if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene {
        // Configure the view.
        let skView = self.view as SKView
        skView.showsFPS = false
        skView.showsNodeCount = false

        /* Sprite Kit applies additional optimizations to improve rendering performance */
        skView.ignoresSiblingOrder = true

        /* Set the scale mode to scale to fit the window */
        scene.size = skView.bounds.size
        scene.scaleMode = .AspectFill;

        skView.presentScene(scene)
    }
}

在 iPhone 4S 上,播放器正确绘制在屏幕上
但是一旦在 iPhone 5/5s 上运行,播放器被绘制在屏幕下方的上方,只能看到一半的 spritenode

iPhone 4S:

iPhone 5/5s:(注意:屏幕截图大小不同,精灵节点大小正确,但位置不正确)

【问题讨论】:

    标签: ios sprite-kit swift


    【解决方案1】:

    听起来这可能是您选择SKSceneScaleMode 的问题,具体来说,听起来您可能选择了调整大小填充比例模式。将此更改为 SKSceneScaleModeAspectFill 应该足以解决此问题。

    【讨论】:

    • @junyi00 如果那是你已经在使用的,那我就错了。你能编辑你的帖子来展示你是如何呈现场景的吗?
    • aspect fill 会导致这个问题,aspect fit (letterboxing) 是更好的选择
    • @LearnCocos2D 这是我最初的想法,但在第二个屏幕截图中,精灵似乎被水平拉伸了。不过不确定。
    • 关于那个,是我的错,我没有截取相同大小的屏幕截图
    • @LearnCocos2D aspect fit 工作正常,没有其他方法可以解决这个问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多