我想制作一个我声明不同位置的结构。我有很多节点总是使用相同的位置,所以我不想每次输入相同的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.
需要帮助: - (
答案 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)
但是,让我说这是解决问题的一种奇怪的方法:
为什么不直接在场景中添加计算属性?
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
}