プログラマメモ2 - programmer no memo2

[Swift][SpriteKit]タッチされた色変える 2015/05/09

Swiftです。SpriteKitです。
タッチされたら色を変えるです。
単純に自分自身に同じ大きさのサイズのnodeを追加で実現してみました。

public class Box : SKSpriteNode { var touched:Bool = false override public func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { touched = !touched println("touched \(touched)") if touched { let color = UIColor(red:0.3, green:0.3, blue:0.3, alpha:0.8) var touchedNode = SKSpriteNode.init(color:color, size:self.size) touchedNode.name = "touched" touchedNode.zPosition = 1.0 self.addChild(touchedNode) } else { let a = self.childNodeWithName("touched") a?.removeFromParent() } } }

あるシーンにaddされたnodeの中で、特定の名前(name)で、特定のクラスであるものをみつけるためのループ処理です。 2014/11/22

spritekitです。そしてswiftです。
あるシーンにaddされたnodeの中で、特定の名前(name)で、特定のクラスであるものをみつけるためのループ処理です。

コード

for child in self.children { if (child as? SKLabelNode)?.name == "label" { println("exist!") } }


SSceneのスーパークラスは、SKNodeなので、メンバーとしてchildrenがいるので、それを廻してみつけます。その際に、swiftのas?を使い特定のクラスのインスタンスをみつけて、キャストして、nameが合致するのをみつけています。

結構この書き方好きかも、廻すさずできたらなおいいですけど。。。

次に合致したら何かしたい場合のコード

for child in self.children { let label = child as? SKLabelNode if label?.name == "name" { println("exist!") label?.text = "書き換え" } }