我创建了一个名为"字符"的SKShapeNode的子类,我尝试使用rectOfSize对其进行初始化,但是由于Must use designated initializer
我不能。
我一直在阅读有关此机制的内容,但我还没有真正了解如何初始化我的SKShapeNode。我相信SKShapeNode唯一指定的初始化器是init()
。
如何初始化它就像使用rectOfSize: CGSize(width: CGFloat, height: CGFloat)
这就是我的尝试:
class Player: SKShapeNode {
init() {
super.init(rectOfSize: CGSize(width: 25, height: 25)) // Must use designated initializer
}
}
答案 0 :(得分:1)
我认为这可能是一个错误。我怀疑所有这些初始化器应该是方便的。现在你可以A)声明没有初始化器,这样初始化器就可以继承。 B)使用init指定的初始化程序并使用以下内容手动设置形状节点的路径:self.path = ...
答案 1 :(得分:0)
这样做(我的例子是circleOfRadius):
class Hunterer: SKShapeNode {
override init()
{
super.init()
let rectSize:CGFloat = 2.0 * RootSGA.specificsHunterRadius()
let rectSizeHalf:CGFloat = rectSize / 2.0
let r = CGRect(origin: CGPointMake(-rectSizeHalf, -rectSizeHalf), size: CGSizeMake(rectSize, rectSize))
self.path = CGPathCreateWithEllipseInRect(r, nil)
self.alpha = RootSGA.ArenaCommonObjectsAlpha
self.fillColor = RootSGA.HunterBackground
self.strokeColor = RootSGA.HunterBackgroundEdge
self.lineWidth = RootSGA.HunterBackgroundEdgeWidth
self.glowWidth = RootSGA.HunterBackgroundEdgeGlowWidth
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
答案 2 :(得分:0)
试试这个:
class Player: SKShapeNode {
override init() {
super.init()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
// For create a Player with init(rectOfSize)
var player : Player
player = Player(rectOfSize: CGSize(width: 25, height: 25))