1

我对我的类 Card 的对象感到困惑,它是 SKSpriteNode 的子类。当用户移动它们时如何访问这些对象。到目前为止,我只能访问覆盖 touchesEnded 函数的 SKNode 对象。

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
}

我需要知道用户正在移动什么对象,但在这种情况下,当 touchNode 是 SKNode 类的对象(不是我的 Card 对象类)时,我无法弄清楚。

4

1 回答 1

1

is运营商正是您所需要的。

运算符比较两个操作数的is类型。如果它们属于同一类型,或者其中一个是另一个的子类,则表达式的计算结果为真。

所以你可以像这样检查它:

if touchedNode is Card {
    // do stuff
}

现在你可能想要做的是,如果touchedNode真的是一个Card,我想使用我在Card类上定义的方法touchedNode

为此,您需要将 to 强制touchedObject转换为Card

let cardNode = touchedNode as! Card

然后你可以调用你的方法cardNode

于 2016-03-27T07:55:00.060 回答