Swift SKShapeNode不接受初始化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift SKShapeNode不接受初始化相关的知识,希望对你有一定的参考价值。
我无法让SKShapeNode的子类接受初始化器。为了解决这个问题,我试图通过这里发布的Adding Convenience Initializers in Swift Subclass示例。我正在使用的代码如下。
class Ground1 : SKShapeNode {
override init() {
super.init()
print("Hello1")
}
convenience init(width: CGFloat, point: CGPoint) {
var points = [CGPoint(x: -900, y: -300),
CGPoint(x: -600, y: -100),
CGPoint(x: -100, y: -300),
CGPoint(x: 2, y: 150),
CGPoint(x: 100, y: -300),
CGPoint(x: 600, y: -100),
CGPoint(x: 900, y: -300)]
self.init(splinePoints: &points, count: points.count)
lineWidth = 5
strokeColor = UIColor.orange
physicsBody = SKPhysicsBody(edgeChainFrom: path!)
physicsBody?.restitution = 0.75
physicsBody?.isDynamic = false
print("Hello2")
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
初始化时,方便init()被忽略并且不被使用。导致没有形状添加到场景中。我究竟做错了什么 ?
答案
感谢0x141E,他的回旋路向我指出了正确的方向。我发现这有效,但代码看起来很乱。 Adding Convenience Initializers in Swift Subclass详细解释了以这种方式进行初始化的原因。虽然我因为使用了splinePoints并分配给路径而被抛弃了寻找解决方案。
class Ground1 : SKShapeNode {
override init() {
super.init()
}
convenience init(name: String) {
var points = [CGPoint(x: -900, y: -300),
CGPoint(x: -600, y: -100),
CGPoint(x: -100, y: -300),
CGPoint(x: 2, y: 150),
CGPoint(x: 100, y: -300),
CGPoint(x: 600, y: -100),
CGPoint(x: 900, y: -300)]
self.init(splinePoints: &points, count: points.count)
lineWidth = 5
strokeColor = UIColor.orange
physicsBody = SKPhysicsBody(edgeChainFrom: self.path!)
physicsBody?.restitution = 0.75
physicsBody?.isDynamic = false
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
以上是关于Swift SKShapeNode不接受初始化的主要内容,如果未能解决你的问题,请参考以下文章