使用Swift对SKShapeNode进行子类化

15

我正在尝试使用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))
所以我的问题是 - 我如何在STGridNode的初始化程序中实现rectOfSize?我已经尝试过:
init(rectOfSize: CGPoint) {
    super.init(rectOfSize: rectOfSize);
}

但是这会出错:'Could not find an overload for init that accepts the supplied arguments'


1
当您尝试初始化方法时,您遇到了什么错误? - drewag
@drewag,我已经更新了我的问题并提供了更多细节。谢谢 :) - samturner
1个回答

24

您尝试的代码存在两个问题:

  1. SKShapeNode 中的 rectOfSize 方法需要一个 CGSize 参数而非 CGPoint
  2. SKShapeNode 中的 rectOfSize 方法是便利初始化器,因此您将无法从子类中调用它。您将需要调用 super.init() 并自己实现矩形功能。

您可以尝试以下代码:

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

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

1
self.path = CGPath(rect: rect, transform: nil)自身路径 = CGPath(矩形:rect,变换:nil) - Aaron Halvorsen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接