我有一个继承自 SKShapeNode 的类,因为我想添加额外的属性。我遇到的问题是我希望能够通过使用 SKShapeNode 的“便利”初始值设定项 SKShapeNode.init(circleOfRadius:CGFloat)
创建一个“圆”,但由于它是一个便利初始值设定项,编译器提示消息“必须调用类 SKShapeNode 的指定初始化器”,因为它只允许调用父类的“指定初始化器”,但 SKShapeNode 唯一的“指定”初始化器是 SKShapeNode.init()
,这不会创建我想要的圆形。
下面是我的编译器错误代码。
所以问题是,我可以将 SKShapeNode 子类化,并且仍然可以以某种方式访问“便利”初始化程序以用圆形初始化它吗?在我看来,这是不可能的。那么有什么解决方法吗?
谢谢
最佳答案
SKShapeNode
的指定初始化程序只是普通的旧 init
,所以这就是我们必须在自定义 init 方法中调用的内容。然后要创建一个圆形,我们必须自己创建路径
。幸运的是,CGPath
有一个方便的初始值设定项,我们可以使用它来创建圆。给你:
import SpriteKit
class CustomSKShapeNode:SKShapeNode{
var groupName:String!
init(groupName:String,radius:CGFloat){
super.init()
self.groupName = groupName
let rect = CGRect(x:-radius,y:-radius,width:radius * 2,height:radius * 2)
self.path = CGPath(ellipseIn: rect, transform: nil)
self.fillColor = UIColor.yellow
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
var node = CustomSKShapeNode(groupName:"group1",radius:40)
node.position = CGPoint(x:40,y:40) // bottom left corner
addChild(node)
关于swift - SKShapeNode 的子类是否可以使用它的便利初始化程序之一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34486714/