В моей игре мне нужна метка с одним символом с фоном и рамкой. Для достижения этой цели я создал этот код с SKLabelNode, SKShapeNode и SKSpriteNode:Каков наилучший способ перемещения o сбор узлов?
override func didMoveToView(view: SKView) {
let label = SKLabelNode(fontNamed:"AmericanTypewriter-CondensedBold")
label.text = "H";
label.fontColor = UIColor.blackColor()
label.fontSize = 120;
label.userInteractionEnabled = false
let background = SKSpriteNode(color: UIColor(red: 255, green: 255, blue: 255, alpha: 0.4), size: CGSizeMake(label.frame.size.width*1.2, label.frame.size.height*1.2))
background.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame))
background.name = "bkg"
background.addChild(label)
label.position = CGPoint(x:0, y:-label.frame.size.height/2)
let border = SKShapeNode(path: CGPathCreateWithRect(CGRectMake(-(background.frame.size.width/2), -(background.frame.size.height/2), background.frame.size.width, background.frame.size.height), nil))
border.fillColor = UIColor.clearColor()
border.strokeColor = UIColor.blackColor()
border.lineWidth = 5.0
border.userInteractionEnabled = false
background.addChild(border)
self.addChild(background)
}
Я выглядит следующим образом:
Тогда мне нужно переместить эту коллекцию узлов. Я попытался добиться этого таким образом:
override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {
for touch in touches {
let location = touch.locationInNode(self)
let touchedNode = nodeAtPoint(location)
if touchedNode.name == "bkg" {
touchedNode.position = location
}
}
}
Но он не двигается плавно, и на это трудно нажимать.
Я не знаю, могу ли я изменить способ создания метки (с 3 узлами) или изменить способ, которым я пытался ее переместить.
Есть ли лучший способ перемещения коллекции узлов?
То, как вы строите, кажется достаточно хорошим. Я думаю, проблема в том, как вы перемещаете backgroundNode. – ZeMoon