2016-03-27 24 views
1

Sınıf kartımın SKSpriteNode alt sınıfı olan nesneleriyle karıştırıldım. Bir kullanıcı onları taşıdığında bu nesnelere nasıl erişebilirim. Şimdiye kadar sadece touchEnded işlevini geçersiz kılan SKNode nesnelerine erişebiliyorum.Taşınırken SKSpriteNode alt sınıfının nesnelerine nasıl erişilir (Swift)

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 
} 

Ben touchedNode SKNode sınıfı (benim Kart nesne sınıfı) Ben bunu anlamaya muktedir değilim bir amacı kullanıcı hareketli ama bu durumda hangi nesnesine bilmemiz gerekir.

cevap

1

is işleciniz tam da ihtiyacınız olan şeydir.

is işleci, iki işlenenin türlerini karşılaştırır. Aynı türdense veya biri diğerinin alt sınıfıysa, ifade doğru olarak değerlendirilir.

Yani bunun gibi kontrol edebilirsiniz:

if touchedNode is Card { 
    // do stuff 
} 

Şimdi yapmak istediğiniz ne olabilir touchedNode gerçekten Card ise, ben touchedNode üzerinde Card sınıfında tanımlanan yöntemleri kullanmak istiyorum olmasıdır .

let cardNode = touchedNode as! Card 

Sonra cardNode üzerinde yöntemlerini çağırabilir:

Bunu yapmak için, touchedObjectCard artığını gerekiyor!

İlgili konular