我想我在这里遗漏了一些令人眼花obvious乱的东西,但是我有:
class ObjectSprite: SKSpriteNode {
let kSpriteSize = CGSize(width: 16, height: 16)
weak var object: Game.Object?
}
以及在我的子类中:
class PlayerSprite : ObjectSprite {
init(_ player: Game.Object) {
super.init(texture: nil, color: SKColor.green, size: kSpriteSize)
object = player
name = "player"
}
}
Swift抱怨'self' used in property access 'kSpriteSize' before 'super.init' call
。但这不是常数吗?为什么不在编译时初始化它?
答案 0 :(得分:1)
让我们使用super
重写self
调用以使错误消息显而易见:
super.init(texture: nil, color: SKColor.green, size: self.kSpriteSize)
正如错误消息所言,您无法在调用self
之前访问super.init
上的属性。
您有几种选择:
kSpriteSize
声明为static let
,并将其称为ObjectSprite.kSpriteSize
。let kSpriteSize
移动到文件的根目录,即类之外。