使用Swift对SKShapeNode进行子类化

sam*_*ner 13 cocoa-touch sprite-kit swift

我正在尝试SKShapeNode使用Swift 进行子类化.到目前为止,我有这样的事情:

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)
    }

}
Run Code Online (Sandbox Code Playgroud)

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

let s = STGridNode(rectOfSize: CGSize(width: 100, height: 100))
Run Code Online (Sandbox Code Playgroud)

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

init(rectOfSize: CGPoint) {
    super.init(rectOfSize: rectOfSize);
}
Run Code Online (Sandbox Code Playgroud)

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

dre*_*wag 23

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

  1. rectOfSizeSKShapeNode一个CGSize不是一个CGPoint
  2. rectOfSizein SKShapeNode是一个便利初始化程序,因此您将无法从子类中调用它.您必须自己调用super.init()并实现rect功能

你可以这样做:

init(rectOfSize: CGSize) {
    super.init()

    var rect = CGRect(origin: CGPointZero, size: rectOfSize)
    self.path = CGPathCreateWithRect(rect, nil)
}
Run Code Online (Sandbox Code Playgroud)