屏幕的实际尺寸比我看到的要大

时间:2014-07-30 16:53:07

标签: ios swift sprite-kit xcode6

我正在学习Swift& SpriteKit。 我创建了新的SpriteKit& Xcode 6中的Swift游戏项目和我编辑的文件GameScene.swift。我没有碰到其他文件。 问题是:当球反弹时,它受到顶部和底部的限制但是当它向左或向右侧时它不受限制并且熄灭但似乎左右限制在那里但它们不在屏幕边缘因为球在一段时间后回来了。 这是我的GameScene.swift

import SpriteKit

class GameScene: SKScene {
    override func didMoveToView(view: SKView) {
        self.backgroundColor = SKColor.whiteColor()

        self.physicsBody = SKPhysicsBody(edgeLoopFromRect: self.frame)
        self.physicsWorld.gravity = CGVectorMake(0, 0)

        let ball = SKSpriteNode(imageNamed: "ball")
        ball.position = CGPointMake(self.size.width/2, self.size.height/2)

        ball.physicsBody = SKPhysicsBody(circleOfRadius: ball.frame.size.width/2)

        self.addChild(ball)

        var myVector = CGVectorMake(20, 20)
        ball.physicsBody.applyImpulse(myVector)
    }

    override func update(currentTime: CFTimeInterval) {
        /* Called before each frame is rendered */
    }
}

我试图找出问题,但我发现如果我在默认scene.scaleMode = .AspectFill中对第42行或GameViewController.swift进行评论,那么边缘工作正常,但屏幕似乎已缩放。

我认为我们有一个真实的方形框架,侧面尺寸等于iOS模拟器中纵向iPhone的高度。 如何更改帧大小以将屏幕边缘设置为我的帧边缘?

2 个答案:

答案 0 :(得分:5)

如上所述,设置尺寸也适合我。 我在GameViewController的viewDidLoad()函数中设置它,就在设置的行之后

/* Set the scale mode to scale to fit the window */
        scene.scaleMode = .AspectFill

通过设置:

scene.size = self.view.frame.size

答案 1 :(得分:1)

我删除了默认创建的场景并添加了行scene = GameScene(size: self.view.frame.size)并且它工作了! 感谢@Literphor