Работя с този код, който намерих, и се опитвам да разбера как да получа имената на възлите за моите обекти?
Ето част от кода:
let sprite1 = SKSpriteNode(color: UIColor.redColor(), size: CGSize(width: 30, height: 30))
let sprite2 = SKSpriteNode(color: UIColor.greenColor(), size: CGSize(width: 30, height: 30))
let sprite3 = SKSpriteNode(color: UIColor.blueColor(), size: CGSize(width: 30, height: 30))
let sprite4 = SKSpriteNode(color: UIColor.yellowColor(), size: CGSize(width: 30, height: 30))
var selected: [UITouch: SKNode] = [:]
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
/* Called when a touch begins */
selected = [:]
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
selected[touch as UITouch] = nodeAtPoint(location)
println(self.name)
}
}
Това, което се опитвам да постигна, е да накарам println
да върне името SKSprintNode
(sprite1, sprite2, sprite3 или sprite4)... Опитах няколко неща, малко всичко, което получавам, е ´nil´
.
Възможно ли е това?
Добавено:
И така, за да продължа, как мога да открия дали докосването е в моите обекти? Ето още малко код:
override func touchesEnded(touches: NSSet, withEvent event: UIEvent) {
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
for (touch, node) in selected{
if !contains(SKScene, node){
let action = SKAction.moveTo(location, duration: 0.1)
node.runAction(SKAction.repeatAction(action, count: 1))
}
}
}
}
С if !contains(SKScene, node)
(който не работи, не може да тества на SKScene
) искам да открия дали докосването е върху обекта или отвън.. Ако е отвън (докосването е SKScene) не искам да правя нищо..
Причината, поради която искам да го направя по този начин и да не тествам имена на let
като т.е. sprite1
е, че планирам да направя всички SKSpriteNode
програмно, така че не е необходимо да знам името на обекта на възела.
Някакви предположения?
if !contains([self], node)
... Това работи! Но дали това е правилният начин да се направи нещо? - person Kjetil   schedule 04.12.2014touchesEnded
вtouchesMoved
, така че сега кутиите (обектите) следват гладко докосването на екрана :-D - person Kjetil   schedule 04.12.2014