Не удается получить доступ к свойству внутри узла объекта Swift - PullRequest
0 голосов
/ 10 ноября 2018

У меня проблемы с доступом к пользовательскому свойству объекта Node в swift. Я попытаюсь объяснить тебе.

Я создаю класс, который наследуется от SkSpriteNode, и я создаю свойство, которое вызывает (Has Gluten)

    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

    }

До тех пор, пока здесь Хорошо, но когда я добавляю этот узел на экран, и я активным касанием Начал, я не могу получить доступ к свойству 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 голосов
/ 10 ноября 2018

Чтобы получить доступ к вашему свойству, вы должны привести объект узла к вашему пользовательскому типу:

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 используйте правильное имя класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...