Swift 4 SpriteKit:如何防止父节点的.alpha 属性影响子节点?
Swift 4 SpriteKit: How to prevent the .alpha property of a parent node from effecting the children nodes?
我有一个 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
我以前从未使用过 SpriteKit 但你能试试吗:
• 而不是 TheLabel.addChild(TheText)
做 self.addChild(TheText)
• 然后尝试将文本锚定在标签的正上方
不要直接在 TheLabel 上设置 alpha。取而代之的是,使用下面的代码行将透明度应用于 TheLabel 而不会影响其子 views.You 需要更改代码的 1 行。
TheLabel.color = UIColor.black.withAlphaComponent(0.2)
这将解决您的问题。并删除这行代码
TheLabel.alpha = 0.5
我有一个 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
我以前从未使用过 SpriteKit 但你能试试吗:
• 而不是 TheLabel.addChild(TheText)
做 self.addChild(TheText)
• 然后尝试将文本锚定在标签的正上方
不要直接在 TheLabel 上设置 alpha。取而代之的是,使用下面的代码行将透明度应用于 TheLabel 而不会影响其子 views.You 需要更改代码的 1 行。
TheLabel.color = UIColor.black.withAlphaComponent(0.2)
这将解决您的问题。并删除这行代码
TheLabel.alpha = 0.5