我正在尝试使用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);
}

但这给出了一个错误:“无法为接受提供的参数的初始化找到重载”

最佳答案

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

  • SKShapeNode接受CGSize而不是CGPoint
  • rectOfSize中的
  • SKShapeNode是一个便捷的初始化程序,因此您将无法从子类中调用它。您将必须调用super.init()并自己实现rect功能

  • 您可以执行以下操作:
    init(rectOfSize: CGSize) {
        super.init()
    
        var rect = CGRect(origin: CGPointZero, size: rectOfSize)
        self.path = CGPathCreateWithRect(rect, nil)
    }
    

    关于cocoa-touch - 用Swift子类化SKShapeNode,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24235185/

    10-12 14:38