SpriteKit - 节点位置的结构

时间:2016-05-15 23:05:49

标签: swift struct sprite-kit skscene

我想制作一个我声明不同位置的结构。我有很多节点总是使用相同的位置,所以我不想每次输入相同的x值和y值,而只想输入positions.p1。

private struct Positions {
    let P1 = myGameScene.frame.size.width * 0.05
    let P2 = myGameScene.frame.size.width * 0.15
}

现在我收到错误:Instance member frame cannot be used on type myGameScene. myGameScene是一个SKScene。

如果我尝试自我。而不是myGameScene我收到错误:Value of type NSObject -> () -> myGameScene has no member frame.

需要帮助: - (

2 个答案:

答案 0 :(得分:1)

确实有效

class MyGameScene: SKScene { }

let myGameScene = MyGameScene()

struct XPositions {
    let x0 = myGameScene.frame.size.width * 0.05
    let x1 = myGameScene.frame.size.width * 0.15
}

print(XPositions().x0)

enter image description here

但是,让我说这是解决问题的一种奇怪的方法:

  1. 您正在使用结构而不是数组
  2. 您需要创建结构的值,以便访问与Positions的每个值相同的属性
  3. 属性(P1,P2)应为小写......
  4. 建议

    为什么不直接在场景中添加计算属性?

    class MyGameScene: SKScene {
        lazy var positions: [CGFloat] = {
            let factors: [CGFloat] = [0.15, 0.05]
            return factors.map { $0 * self.frame.size.width }
        }()
    }
    

答案 1 :(得分:0)

使用边界而不是框架。

private struct Positions {
     let P1 = myGameScene.bounds.size.width * 0.05
     let P2 = myGameScene.bounds.size.width * 0.15
}