无法访问对象节点Swift中的Property

时间:2018-11-10 15:30:16

标签: swift

我无法快速访问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时,它没有显示给我。

如果有人可以帮助我,我会很高兴。谢谢

1 个答案:

答案 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使用正确的类名。