【问题标题】:SKShapeNode Using Wrong Width and HeightSKShapeNode 使用错误的宽度和高度
【发布时间】:2014-12-31 19:06:13
【问题描述】:

最近我一直在创建一个我在屏幕上放置圆圈的游戏。但是,我注意到圆形不是圆形,实际上是椭圆形。 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 中增加了 512.5,在 y 中增加了 384.5。但是,由于某种原因,在屏幕上创建的矩形在 Y 轴上更长。也许框架不是我应该打印的数字,但不管屏幕上的形状不是正方形。有谁知道这是为什么?非常感谢任何帮助!

【问题讨论】:

  • 检查 self.frame,这可能会受到场景 scaleMode 的影响,并且肯定会受到场景初始化的大小的影响
  • self.frame.width = 1024.0 self.frame.height = 768.0 这听起来不太对劲,因为 iPhone 处于纵向模式。

标签: ios swift sprite-kit skspritenode


【解决方案1】:

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

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

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)

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多