我无法快速访问Node Object的自定义属性。我要向你解释。
我创建了一个继承自SkSpriteNode的类,并创建了一个调用(具有谷蛋白)的属性
init(foodName: String, foodNote: String, foodImage: SKTexture, hasGluten: Bool) {
self.foodNote = foodNote
self.foodImage = foodImage
self.hasGluten = hasGluten
self.foodName = foodName
super.init(texture: foodImage, color: UIColor.clear, size: CGSize(width: 40, height: 40))
self.position = CGPoint(x: Int.random(in: 0..<355), y: 600)
self.name = self.foodName
}
直到此处,确定,但是当我将此节点添加到屏幕上并且我主动触摸Began时,我无法访问此类内的属性HasGluten。 它说我可以访问本机属性,例如(名称,位置等)
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?)
{
let touch:UITouch = touches.first!
let positionInScene = touch.location(in: self)
let touchedNode = self.atPoint(positionInScene)
if touchedNode.hasGluten == true { callfunction() } else {call another function}
}
这是我要访问该属性的地方。但是当我尝试访问属性HasGluten时,它没有显示给我。
如果有人可以帮助我,我会很高兴。谢谢
答案 0 :(得分:0)
为了访问您的属性,应将节点对象转换为自定义类型:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?)
{
let touch:UITouch = touches.first!
let positionInScene = touch.location(in: self)
guard let touchedNode = self.atPoint(positionInScene) as? CustomNode else { return }
if touchedNode.hasGluten == true { callfunction() } else {call another function}
}
相反,CustomNode
使用正确的类名。