有人可以解释为什么我在第二个
上收到错误super.init()
而不是第一个? 或者我应该以不同的方式构造它以避免错误?
class Ground : SKSpriteNode {
init (length : CGFloat, xposition : CGFloat) {
let texture = SKTexture(imageNamed: "Ground")
let size = CGSize(width: length, height: 10)
super.init(texture: texture, color: nil, size: size)
self.position = CGPoint(x: xposition, y: CGFloat(5))
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
} }
class Platform : SKSpriteNode {
init (length : CGFloat, xposition : CGFloat, yposition : CGFloat) {
let texture = SKSpriteNode(imageNamed: "Platform")
let size = CGSize(width: length, height: 10)
super.init(texture: texture, color: nil, size: size)
self.position = CGPoint(x: xposition, y: yposition)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
} }
答案 0 :(得分:1)
因为你在第二种方法中写了let texture = SKSpriteNode(...)
而在第一种方法中写了let texture = SKTexture(...)
。
为了让它更明显,让我们将这两个调用放在彼此之下:
let texture = SKTexture(imageNamed: "Ground")
let texture = SKSpriteNode(imageNamed: "Platform")
我对SpriteKit了解不多,但我认为第二个中的SKSpriteNode
是拼写错误,它也应该是SKTexture
。
并且编译器想要抱怨纹理参数是错误的类型,但它会混淆,所以它抱怨颜色。