【问题标题】:Subclassing SKShapeNode with Swift使用 Swift 子类化 SKShapeNode
【发布时间】: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,我已经更详细地更新了我的问题。谢谢:)

标签: cocoa-touch sprite-kit swift


【解决方案1】:

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

  1. rectOfSize in SKShapeNode 采用 CGSize 而不是 CGPoint
  2. 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)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-13
  • 1970-01-01
相关资源
最近更新 更多