我有一个场景,与一些孩子,他们是子类SKNodes.我试图为每个子节点访问一个方法,但得到的错误是“类型'SKNode‘的值没有成员’成员名‘。
所有在Swift 5上的Xcode 10.2 (如果这是相关的?)。
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数组访问这些方法?这是可能的还是我应该改变策略?
谢谢!
发布于 2019-05-10 14:03:40
SKScene的子级为SKNode型。您希望访问SKNode子类的属性。在编译时,子程序被看作是SKNodes。你应该试着选你的孩子,就像
儿童在self.children {(儿童为?NamedNode).whatsMyName() }
请记住,降级通常是一种代码气味。
https://stackoverflow.com/questions/56077420
复制相似问题