在我的游戏中,我需要一个带有背景和边框的角色的标签。要实现这一点,我使用SKLabelNode,SKShapeNode和SKSpriteNode创建此代码:
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个节点),或者我改变了我试图移动它的方式。
是否有移动节点集合的最佳方法?
答案 0 :(得分:2)
如果将所有节点添加到单个父节点,则可以移动该父节点,然后所有三个现有节点也将移动。