我试图让一个数字出现在 SKShapeNode 的中间。但是,由于某种原因,当我将 SKLabelNode 添加为形状节点的子节点时,尽管 SKShapeNode 确实出现了,但它并没有出现。我添加了与 SKScene 子级相同的标签,它看起来很好。以下是自定义类的代码:
class Dot: SKShapeNode {
var numLabel = SKLabelNode(fontNamed: "MarkerFelt-Wide")
func setNumber(i: Int) {
numLabel.text = String(i)
numLabel.fontColor = UIColor.whiteColor()
numLabel.fontSize = 200
numLabel.setScale(numLabel.frame.width / self.frame.width / 2)
numLabel.position = CGPointMake(self.frame.midX ,self.frame.midY)
self.addChild(numLabel)
}
}
我调用 dot.setNumber(1)
但没有任何反应。如果您发现问题,请告诉我。谢谢!
最佳答案
经过多次尝试和错误,重新自学如何 SKNodes
与 UIViews
的工作方式不同,我认为你的问题的原因如下:.position
sprite kit中的属性不是节点角点的位置,而是节点的中心。另外,当设置SKNode
时作为另一个人的 child SKNode
,它的位置基于其父级,而不是场景。因此,不要设置 numLabel
至midX
和midY
它应该是:
numLabel.position = CGPointMake(0, 0)
但是,由于某种原因 y
值仍然不正确,至少在我使用的代码中是这样。这可能是由于您缩放numLabel
的方式所致。 。所以我用代码修复了它:
numLabel.position = CGPointMake(0, -(numLabel.frame.height / 2))
尽管如此,这并不完美。
有了这些新信息,如果您仍然无法弄清楚,我将进一步研究以获取确切的位置。但请记住我在本文开头的回答。
关于ios - 自定义 SKShapeNode 子项未出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31095543/