SpriteKit - 节点位置的结构
SpriteKit - Struct for nodes position
我想制作一个声明不同位置的结构。我有许多节点总是使用相同的位置,所以我不想每次都输入相同的 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.
需要帮助:-(
使用边界而不是框架。
private struct Positions {
let P1 = myGameScene.bounds.size.width * 0.05
let P2 = myGameScene.bounds.size.width * 0.15
}
确实有效
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)
但是让我说这是解决问题的一种奇怪方法:
- 您使用的是结构而不是数组
- 您需要创建一个结构值来访问与 Positions 的每个值相同的属性
- 属性 (P1, P2) 应该是小写...
建议
你为什么不直接在你的场景中添加一个计算的属性?
class MyGameScene: SKScene {
lazy var positions: [CGFloat] = {
let factors: [CGFloat] = [0.15, 0.05]
return factors.map { [=11=] * self.frame.size.width }
}()
}
我想制作一个声明不同位置的结构。我有许多节点总是使用相同的位置,所以我不想每次都输入相同的 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.
需要帮助:-(
使用边界而不是框架。
private struct Positions {
let P1 = myGameScene.bounds.size.width * 0.05
let P2 = myGameScene.bounds.size.width * 0.15
}
确实有效
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)
但是让我说这是解决问题的一种奇怪方法:
- 您使用的是结构而不是数组
- 您需要创建一个结构值来访问与 Positions 的每个值相同的属性
- 属性 (P1, P2) 应该是小写...
建议
你为什么不直接在你的场景中添加一个计算的属性?
class MyGameScene: SKScene {
lazy var positions: [CGFloat] = {
let factors: [CGFloat] = [0.15, 0.05]
return factors.map { [=11=] * self.frame.size.width }
}()
}