问题
I'm trying to subclass SKShapeNode
with Swift. So far I've got something like this:
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)
}
}
In my code I want so do something along the lines of:
let s = STGridNode(rectOfSize: CGSize(width: 100, height: 100))
So my question is - how do I implement rectOfSize
in the initialiser for STGridNode
? I've tried:
init(rectOfSize: CGPoint) {
super.init(rectOfSize: rectOfSize);
}
But that gives an error: 'Could not find an overload for init that accepts the supplied arguments'
回答1:
You have two problems with the code you tried:
rectOfSize
inSKShapeNode
takes aCGSize
not aCGPoint
rectOfSize
inSKShapeNode
is a convenience initializer so you won't be able to call it from a subclass. You will have to callsuper.init()
and implement the rect functionality yourself
You can do something like this:
init(rectOfSize: CGSize) {
super.init()
var rect = CGRect(origin: CGPointZero, size: rectOfSize)
self.path = CGPathCreateWithRect(rect, nil)
}
来源:https://stackoverflow.com/questions/24235185/subclassing-skshapenode-with-swift