我有一个场景,其中包含大量子类为SKNode的子类。我正在尝试为每个子节点访问一个方法,但收到错误“类型'SKNode'的值没有成员'[成员名称]“。
所有有关Xcode 10.2的Swift 5(如果相关吗?)。
import SpriteKit
class GameScene: SKScene {
override func didMove(to view: SKView) {
let slim = NamedNode(name: "Slim Shady")
let snoop = NamedNode(name: "Snoop Dog")
let shaggy = NamedNode(name: "Shaggy")
self.addChild(slim)
self.addChild(snoop)
self.addChild(shaggy)
for child in self.children {
child.whatsMyName()
// ERROR: Value of type 'SKNode' has no member 'whatsMyName'
}
}
}
class NamedNode: SKNode {
var standup = false
init(name: String) {
super.init()
self.name = name
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func whatsMyName() {
print("My name is ", name as Any)
if self.name == "Slim Shady" {
standup = true
}
}
}
如何从Scene.children数组访问这些方法?有可能还是应该更改拍子?
谢谢!
答案 0 :(得分:0)
SKScene的子代为SKNode类型。您要访问SKNode子类的属性。在编译时,子代被视为SKNode。 您应该尝试抛弃您的孩子,例如
对于self.children中的孩子{ (子级为?NamedNode)。whatsMyName() }
请记住,向下转换通常是一种代码味道。