gpt4 book ai didi

swift - SKShapeNode 的子类是否可以使用它的便利初始化程序之一?

转载 作者:搜寻专家 更新时间:2023-11-01 05:38:04 24 4
gpt4 key购买 nike

我有一个继承自 SKShapeNode 的类,因为我想添加额外的属性。我遇到的问题是我希望能够通过使用 SKShapeNode 的“便利”初始值设定项 SKShapeNode.init(circleOfRadius:CGFloat) 创建一个“圆”,但由于它是一个便利初始值设定项,编译器提示消息“必须调用类 SKShapeNode 的指定初始化器”,因为它只允许调用父类的“指定初始化器”,但 SKShapeNode 唯一的“指定”初始化器是 SKShapeNode.init() ,这不会创建我想要的圆形。下面是我的编译器错误代码。所以问题是,我可以将 SKShapeNode 子类化,并且仍然可以以某种方式访问​​“便利”初始化程序以用圆形初始化它吗?在我看来,这是不可能的。那么有什么解决方法吗?

谢谢

enter image description here

最佳答案

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com