我创建了一个名为smallScreen的SKShapeNode和一个名为screenLabel的SKLabelNode。
我后来尝试在smallScreen中显示screenLabel。然而,当我运行代码时,它不起作用。我尝试将screenLabel作为一个孩子添加到自己,这似乎允许显示文本。每当我将screenLabel作为子节点添加到smallScreen时,它就不会显示。请多多帮助,谢谢。
self.smallScreen = (self.childNodeWithName("screen") as? SKShapeNode)!
self.smallScreen.position = CGPoint(x: self.frame.size.width/2, y: self.frame.size.height * 2/3)
screenLabel.text = "Screen"
screenLabel.fontSize = 30
screenLabel.fontColor = UIColor.redColor()
screenLabel.position = CGPoint(x: self.frame.size.width/2, y: self.frame.size.height * 2/3)
screenLabel.hidden = false
self.smallScreen.addChild(screenLabel)
答案 0 :(得分:0)
默认情况下,在Sprite-kit中,场景的原点位于视图的左下角。其默认值为CGPointZero
,您无法更改它。 (source)。
精灵的(SKSpriteNode
)定位点默认为(0.5,0.5),对应于帧的中心(source)。
SKShapeNode
没有anchorPoint 。
LearnCocos2D在这个问题上回答:
使用图像时,可能需要将其对齐到节点的位置。 没有其他办法可以做到这一点,但通过anchorPoint,因为 图像本身无法修改(反正不容易)。
创建形状时,您可以完全控制对齐 通过CGPath的形状。您可以简单地将路径转换为更改 形状相对于节点位置的对齐。
这是我的解释,而不是事实。
那么,您的代码发生了什么?
我不知道你是如何初始化你的形状的,我只是举个例子:
/* Create a Shape Node representing a rect centered at the Node's origin. */
@available(iOS 8.0, *)
public convenience init(rectOfSize size: CGSize)
所以我们创建这样的形状:
self.smallScreen = SKShapeNode.init(rectOfSize: CGSizeMake(200,200))
首次,您将SKShapeNode
放置在X坐标的屏幕X中心,Y = self.frame.size.height * 2/3。实际上,您的smallScreen
可见。
说到您的标签,您已将其添加到smallScreen
,因此screenLabel
必须尊重其父母的对齐方式。
事实上,只需进行此更改即可看到您的标签:
自:
screenLabel.position = CGPoint(x: self.frame.size.width/2, y: self.frame.size.height * 2/3)
要:
screenLabel.position = CGPointZero
并根据其父母的对齐方式将您的标签定位到smallScreen
的中心。