Cra*_*lot 8 ios scenekit swift scnnode
目标是子类化SCNNode.根据类docs,init(geometry geometry: SCNGeometry?)是一个指定的初始化器(没有convenience列出关键字),所以这个代码是不是调用了它的超类的指定初始化器?
为什么Xcode显示以下错误?
必须调用超类SCNNode的指定初始值设定项
class PreviewNode: SCNNode {
// Constants
let PreviewNodeColor = gRedColor
let Size = CGFloat(1.0)
let ChamferRadius = CGFloat(0.0)
override init() {
let previewBox = SCNBox(width: Size, height: Size, length: Size, chamferRadius: ChamferRadius)
previewBox.firstMaterial!.diffuse.contents = PreviewNodeColor
previewBox.firstMaterial!.transparency = 0.2
previewBox.firstMaterial!.specular.contents = UIColor.whiteColor()
super.init(geometry: previewBox)
}
}
Run Code Online (Sandbox Code Playgroud)
问题是你在调用self.init()之前也试图访问你的PreviewNode属性
试试这样:
Xcode 8 GM•Swift 3
class PreviewNode: SCNNode {
let previewNodeColor: UIColor = .red
let size: CGFloat = 1
let chamferRadius: CGFloat = 0
convenience override init() {
self.init()
let previewBox = SCNBox(width: size, height: size, length: size, chamferRadius: chamferRadius)
previewBox.firstMaterial?.diffuse.contents = previewNodeColor
previewBox.firstMaterial?.transparency = 0.2
previewBox.firstMaterial?.specular.contents = UIColor.white
self.geometry = previewBox
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9656 次 |
| 最近记录: |