移动节点集合的最佳方法是哪种?

时间:2015-02-23 01:58:25

标签: ios sprite-kit

在我的游戏中,我需要一个带有背景和边框的角色的标签。要实现这一点,我使用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)



    }

我看起来像这样:

enter image description here

然后我需要移动这个节点集合。我试着这样做:

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个节点),或者我改变了我试图移动它的方式。

是否有移动节点集合的最佳方法?

1 个答案:

答案 0 :(得分:2)

如果将所有节点添加到单个父节点,则可以移动该父节点,然后所有三个现有节点也将移动。