Ios 移动节点集合的最佳方式是什么?
在我的游戏中,我需要一个带有背景和边框的角色标签。为了实现这一点,我使用SKLabelNode、SKShapeNode和SKSpriteNode创建了以下代码:Ios 移动节点集合的最佳方式是什么?,ios,sprite-kit,Ios,Sprite Kit,在我的游戏中,我需要一个带有背景和边框的角色标签。为了实现这一点,我使用SKLabelNode、SKShapeNode和SKSpriteNode创建了以下代码: override func didMoveToView(view: SKView) { let label = SKLabelNode(fontNamed:"AmericanTypewriter-CondensedBold") label.text = &q
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个节点)还是改变了移动标签的方式
是否有移动节点集合的最佳方法?如果将所有节点添加到单个父节点,则可以移动该父节点,然后所有三个现有节点也将移动。谢谢您的回答。我该怎么做?我是否应该将一个节点子类化并将所有内容放入这个新类中?我相信您可以将子节点添加到SpriteKit中的任何其他节点。尝试创建一个通用的
SKNode
,然后使用parent.addChild(child)
将这些节点添加为子节点。您构建的方式似乎已经足够好了。我认为问题在于如何移动backgroundNode。