将SKLabelNode设置为SKSpriteNode中心的方法(Swift)

6

我想把 SKLabelNode 的位置设置为 SKSpriteNode 的中心。

我看了其他关于此问题的提问,但是它们都不适用于 Swift 3。

这是我的代码:

    var letter1background = SKSpriteNode(imageNamed: "letterbackground")
    var letter1text = SKLabelNode()

    override func didMove(to view: SKView) {


        letter1background.position = CGPoint(x: self.size.width / 8, y: self.size.height / 7.5)
        letter1background.size = CGSize(width: self.size.width / 8, height: self.size.width / 8)
        letter1background.zPosition = -5

        self.addChild(letter1background)

        letter1text.text = "C"
        letter1text.fontName = "Verdana-Bold "
        letter1text.fontSize = 28
        letter1text.fontColor = UIColor.white
       letter1text.zPosition = 0
       letter1text.horizontalAlignmentMode = letter1background.center
        letter1text.verticalAlignmentMode = letter1background.center

        self.letter1background.addChild(letter1text)


    }

这段代码看起来应该是可以工作的,但在Swift 3中,我现在收到了以下错误:

类型'SKSpriteNode'的值没有成员'center'

我也尝试过:

self.letter1text.position = CGPoint(x: letter1background.frame.width/2 - (letter1text.frame.width/2), y: letter1background.frame.height/2 -(letter1text.frame.height/2))

&

letter1text.position = CGPoint(x:letter1background.frame.midX, y:letter1background.frame.midY)

但我仍然会得到像这样的结果:iphone screen 有什么建议吗?

可能是在SKSpriteNode上居中一个SKLabelNode的重复问题。 - shallowThought
据我所知,@NiallKehoe,SKSpriteNode从未拥有名为“center”的属性。该属性仅适用于视图,而不适用于节点。 - Whirlwind
1个回答

6
你计算标签位置的方法有误。你只需要将标签添加到位置为0,0的节点上,它就会居中,因为受到SpriteKit坐标系规则 (0,0位于节点中心) 的影响。
override func didMove(to view: SKView) {

        let label = SKLabelNode(fontNamed: "Arial")

        label.text = "C"
        label.fontColor = .black
        label.verticalAlignmentMode = .center
        label.fontSize = 29.0
        label.zPosition = 1


        let background = SKSpriteNode(color: .green, size: CGSize(width: 50, height: 50))

        background.addChild(label)

        addChild(background)

    }

你将获得如下内容:

输入图片说明


谢谢,我稍微修改了你的代码以适应我的应用程序,现在它可以正常工作了!再次感谢。 - Niall Kehoe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接