自定义 SKShapeNode Child 未出现
Custom SKShapeNode Child Not Appearing
我想让一个数字出现在 SKShapeNode 的中间。但是,由于某种原因,当我将 SKLabelNode 添加为形状节点的 child 时,尽管 SKShapeNode 确实出现了,但它并没有出现。我添加了与 SKScene 的 child 相同的标签,它看起来很好。这是自定义 class:
的代码
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
设置为另一个 SKNode
的子项时,其位置基于其父项,而不是场景。因此,与其将 numLabel
设置为 midX
和 midY
,不如将其设置为:
numLabel.position = CGPointMake(0, 0)
但是,由于某些原因,y
值仍然不正确,至少在我使用的代码中是这样。这可能是由于您缩放 numLabel
的方式所致。所以我用代码修复了它:
numLabel.position = CGPointMake(0, -(numLabel.frame.height / 2))
不过,这并不完美。
有了这些新信息,如果您仍然无法弄清楚,我会进一步研究以获得确切的位置。但是请记住我在post.
开头的回答
我想让一个数字出现在 SKShapeNode 的中间。但是,由于某种原因,当我将 SKLabelNode 添加为形状节点的 child 时,尽管 SKShapeNode 确实出现了,但它并没有出现。我添加了与 SKScene 的 child 相同的标签,它看起来很好。这是自定义 class:
的代码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
设置为另一个 SKNode
的子项时,其位置基于其父项,而不是场景。因此,与其将 numLabel
设置为 midX
和 midY
,不如将其设置为:
numLabel.position = CGPointMake(0, 0)
但是,由于某些原因,y
值仍然不正确,至少在我使用的代码中是这样。这可能是由于您缩放 numLabel
的方式所致。所以我用代码修复了它:
numLabel.position = CGPointMake(0, -(numLabel.frame.height / 2))
不过,这并不完美。
有了这些新信息,如果您仍然无法弄清楚,我会进一步研究以获得确切的位置。但是请记住我在post.
开头的回答