SKShapeNode使用错误的宽度和高度

时间:2014-12-31 19:06:14

标签: ios swift sprite-kit skspritenode

最近我一直在创建一个游戏,我在屏幕上放置圆圈。但是,我注意到通告不是圆圈,而是椭圆形。 y轴已被拉伸,x轴已缩小。为了找出问题,我现在尝试使用矩形进行调试。我使矩形具有相同的高度和宽度(正方形)但是,当变成skshapenode时,它不再是正确的形状。代码:

var testSquare = CGRect(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame), width: 1, height: 1)

var squareNode = SKShapeNode(rect: testSquare)
println(testSquare.width)
println(testSquare.height)
println(squareNode.frame.width)
println(squareNode.frame.height)
self.addChild(squareNode)

以下是从中打印的内容:

1.0
1.0
513.5
385.5

如果我将testSquare的高度和宽度都更改为100,则会打印出来:

100.0
100.0
612.5
484.5

由于某种原因,x中的squarenode的帧增加了512.5,而在y中的帧增加了384.5。由于某种原因,在屏幕上创建的矩形虽然更长。也许框架不是我应该打印的数字,但无论屏幕上的形状是不是正方形。有谁知道那是为什么?非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

您使用sks文件制作SKView吗?或者你在viewcontroller中实例化它?重要的是要使场景的尺寸正确。我知道这不是直接回答你的问题,但如果你得到奇怪的伸展和东西,也许你应该从这开始并从那里进行调试..

这给了我正确的场景尺寸。

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)

    // Configure the view.
    let skView = self.view as SKView
    skView.showsFPS = true
    skView.showsNodeCount = true

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

    /* Set the scale mode to scale to fit the window */
    let scene = GameScene(size: skView.bounds.size)
    scene.scaleMode = .AspectFill

    skView.presentScene(scene)

}