2016-03-27 12 views
1

SKSpriteNodeのサブクラスであるクラスカードのオブジェクトと混同しています。ユーザーがこれらのオブジェクトを移動したときに、これらのオブジェクトにアクセスする方法を教えてください。これまでは、touchesEnded関数をオーバーライドするSKNodeオブジェクトにのみアクセスできます。SKSpriteNodeサブクラスのオブジェクトへのアクセス方法(Swift)

私はtouchedNodeが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 
} 

答えて

1

isの演算子が必要なものです。

is演算子は、2つのオペランドの型を比較します。それらが同じ型であるか、または一方が他方のサブクラスである場合、式は真と評価されます。

だから、あなたはこのようにそれを確認することができます。

if touchedNode is Card { 
    // do stuff 
} 

は、今あなたがしたいかもしれないものtouchedNodeが本当にCardであれば、私はtouchedNodeCardクラスで定義されたメソッドを使用したいということです。これを行うには

、あなたはCardtouchedObjectをキャストする必要があります。

let cardNode = touchedNode as! Card 

次にあなたがcardNodeであなたのメソッドを呼び出すことができます!

関連する問題