Swift 4 SpriteKit:如何防止父节点的.alpha属性影响子节点?

时间:2018-05-06 02:15:17

标签: sprite-kit swift4 skspritenode

我有一个SKSpriteNode,它是SKLabelNode的父节点。当我更改SKSpriteNode的.alpha属性时,它也会更改SKLabelNode的.alpha属性。这不是我想要实现的行为,我希望SKSpriteNode的.alpha为0.5(这是文本的背景),然后SKLabelNode的.alpha为0.9。有没有人知道如何为我的游戏创建这个功能?

以下是我的标签代码:

    let TheLabel = SKSpriteNode()
    TheLabel.zPosition = 6
    TheLabel.color = UIColor.black
    TheLabel.anchorPoint = CGPoint(x: 0, y: 0)
    TheLabel.alpha = 0.5

    let TheText = SKLabelNode(fontNamed: "Noteworthy")
    TheText.text = "TheUserNameOfTheOpponent"
    TheText.fontSize = 25
    TheText.fontColor = UIColor.white.withAlphaComponent(0.9)
    TheText.zPosition = 7

    TheLabel.size.width = TheText.frame.size.width * 1.2
    TheLabel.size.height = TheText.frame.size.height * 1.2
    TheLabel.position = CGPoint(x: self.frame.width / 2 - (TheLabel.frame.width / 2), y: self.frame.height - 50)
    TheText.position = CGPoint(x: TheLabel.size.width / 2, y: TheLabel.size.height / 2)
    TheText.horizontalAlignmentMode = .center
    TheText.verticalAlignmentMode = .center

    self.addChild(TheLabel)
    TheLabel.addChild(TheText)

以下是目前情况的屏幕截图:CurrentLabel

以下是我希望它看起来像的屏幕截图:DesiredLabel

2 个答案:

答案 0 :(得分:0)

我以前从未使用 SpriteKit ,但您可以尝试:

•取代TheLabel.addChild(TheText)self.addChild(TheText)

•然后尝试将文本锚定在标签顶部

答案 1 :(得分:0)

不要直接在 TheLabel 上设置alpha。而不是使用下面的代码行,它将透明度应用于 TheLabel ,而不会影响其子视图。您需要更改代码的1行。

TheLabel.alpha = 0.5

这将解决您的问题。并删除这行代码

{{1}}