从子类初始化SKShapenode?

时间:2014-07-23 22:34:38

标签: ios swift

我创建了一个名为"字符"的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
    }
}

3 个答案:

答案 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))