Как получить доступ к объектам подкласса SKSpriteNode при их перемещении (Swift)

Я запутался с объектами моего класса Card, который является подклассом SKSpriteNode. Как получить доступ к этим объектам, когда пользователь их перемещает. Пока что я могу получить доступ только к объектам SKNode, переопределяющим функцию touchesEnded.

override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
    let touch : UITouch = touches.first as UITouch!
    let touchLocation = touch.locationInNode(self)
    touchedNode = self.nodeAtPoint(touchLocation)
    touchedNode.position = CGPoint(x: size.width * 0.5, y: size.height * 0.5)
    touchedNode.zPosition = 0
}

Мне нужно знать, какой объект перемещает пользователь, но в этом случае, когда touchedNode - это объект класса SKNode (не мой класс объектов Card), я не могу понять это.

1 ответ

Решение

is Оператор именно то, что вам нужно.

is Оператор сравнивает типы двух операндов. Если они одного типа или один является подклассом другого, выражение оценивается как true.

Таким образом, вы можете проверить это так:

if touchedNode is Card {
    // do stuff
}

Теперь, что вы могли бы сделать, это если touchedNode действительно CardЯ хочу использовать методы, которые я определил в Card класс на touchedNode,

Для этого вам нужно разыграть touchedObject в Card:

let cardNode = touchedNode as! Card

Затем вы можете вызвать ваши методы на cardNode!

Другие вопросы по тегам