使用 Swift 子类化 SKShapeNode

Posted

技术标签:

【中文标题】使用 Swift 子类化 SKShapeNode【英文标题】:Subclassing SKShapeNode with Swift 【发布时间】:2014-06-16 00:04:22 【问题描述】:

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

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

【问题讨论】:

尝试初始化方法时遇到什么错误? @drewag,我已经更详细地更新了我的问题。谢谢:) 【参考方案1】:

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

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

你可以这样做:

init(rectOfSize: CGSize) 
    super.init()

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

【讨论】:

self.path = CGPath(rect: rect, transform: nil)

以上是关于使用 Swift 子类化 SKShapeNode的主要内容,如果未能解决你的问题,请参考以下文章

Swift SKShapeNode不接受初始化

适用于 iOS 7.1 的带有 swift 的 SKShapeNode

SKShapeNode在Swift中的浮点问题

Spritekit Swift SKShapeNode 未出现

使用 Swift 子类化 UIApplication

将手势识别器添加到SKShapeNode Swift 4