使用Swift对SKShapeNode进行子类化

时间:2014-06-16 00:04:22

标签: cocoa-touch sprite-kit swift

我试图用Swift继承SKShapeNode。到目前为止,我有这样的事情:

import UIKit
import SpriteKit

class STGridNode: SKShapeNode {

    init() {
        super.init()
        self.name = "STGridNode"
        self.fillColor = UIColor(red: 0.11, green: 0.82, blue: 0.69, alpha: 1)
    }

}

在我的代码中,我希望这样做:

let s = STGridNode(rectOfSize: CGSize(width: 100, height: 100))

所以我的问题是 - 如何在rectOfSize的初始化程序中实现STGridNode?我试过了:

init(rectOfSize: CGPoint) {
    super.init(rectOfSize: rectOfSize);
}

但是这给出了一个错误:'找不到接受提供的参数的init的重载'

1 个答案:

答案 0 :(得分:23)

您尝试的代码有两个问题:

    {li} rectOfSize SKShapeNode只需CGSize而不是CGPoint rectOfSize中的
  1. SKShapeNode是一个便利初始值设定项,因此您无法从子类中调用它。您必须致电super.init()并自行实施rect功能
  2. 您可以这样做:

    init(rectOfSize: CGSize) {
        super.init()
    
        var rect = CGRect(origin: CGPointZero, size: rectOfSize)
        self.path = CGPathCreateWithRect(rect, nil)
    }