没有为 SKShapeNode (circleOfRadius: radius) 指定初始化
no designated init for SKShapeNode(circleOfRadius: radius)
我正在尝试在 swift 中创建 SKShapeNode 的子类作为 SKShapeNode(circleOfRadius: radius) 但没有指定的初始化。
任何人有任何变通方法或有关原因的信息吗?我不确定这是错误还是故意的。我发现此视频演示了 SKSpriteNode 的解决方法,但它对我不起作用。 https://skillsmatter.com/skillscasts/5695-how-to-subclass-a-skspritenode
总的来说,我正在尝试为 SKShapeNode 创建一个子类,然后我可以再次对其进行子类化,以获得不同的版本,以便更轻松地管理我的代码。
TIA
谢谢 Martin,我之前找到了那个例子。它有效,但我如何将其变成圆形而不是矩形?
import Foundation
import SpriteKit
class Player : SKShapeNode {
override init() {
super.init()
self.name = "Player"
self.fillColor = UIColor.blackColor()
}
init(rectOfSize: CGSize) {
super.init()
var rect = CGRect(origin: CGPointZero, size: rectOfSize)
self.path = CGPathCreateWithRect(rect, nil)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
在主代码中
let playerOne = Player(rectOfSize: CGSize(width: 100, height: 100))
这个怎么样?
class Player: SKShapeNode {
init(circleOfRadius: CGFloat){
super.init()
let diameter = circleOfRadius * 2
self.path = CGPathCreateWithEllipseInRect(CGRect(origin: CGPointZero, size: CGSize(width: diameter, height: diameter)), nil)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
这对我们有用。
它允许您使用 SKShapeNode
中的其他便捷初始化器,但它有奇怪的语法解释在这里:
class CircleNode : SKShapeNode {
override init() {
super.init()
}
convenience init(width: CGFloat, point: CGPoint) {
self.init()
self.init(circleOfRadius: width/2)
// Do stuff
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
我正在尝试在 swift 中创建 SKShapeNode 的子类作为 SKShapeNode(circleOfRadius: radius) 但没有指定的初始化。
任何人有任何变通方法或有关原因的信息吗?我不确定这是错误还是故意的。我发现此视频演示了 SKSpriteNode 的解决方法,但它对我不起作用。 https://skillsmatter.com/skillscasts/5695-how-to-subclass-a-skspritenode
总的来说,我正在尝试为 SKShapeNode 创建一个子类,然后我可以再次对其进行子类化,以获得不同的版本,以便更轻松地管理我的代码。 TIA
谢谢 Martin,我之前找到了那个例子。它有效,但我如何将其变成圆形而不是矩形?
import Foundation
import SpriteKit
class Player : SKShapeNode {
override init() {
super.init()
self.name = "Player"
self.fillColor = UIColor.blackColor()
}
init(rectOfSize: CGSize) {
super.init()
var rect = CGRect(origin: CGPointZero, size: rectOfSize)
self.path = CGPathCreateWithRect(rect, nil)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
在主代码中
let playerOne = Player(rectOfSize: CGSize(width: 100, height: 100))
这个怎么样?
class Player: SKShapeNode {
init(circleOfRadius: CGFloat){
super.init()
let diameter = circleOfRadius * 2
self.path = CGPathCreateWithEllipseInRect(CGRect(origin: CGPointZero, size: CGSize(width: diameter, height: diameter)), nil)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
这对我们有用。
它允许您使用 SKShapeNode
中的其他便捷初始化器,但它有奇怪的语法解释在这里:
class CircleNode : SKShapeNode {
override init() {
super.init()
}
convenience init(width: CGFloat, point: CGPoint) {
self.init()
self.init(circleOfRadius: width/2)
// Do stuff
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}